Xcode 9의 "이 함수 선언은 프로토 타입이 아닙니다"경고
Xcode 9를 사용할 때라는 컴파일러 경고가 This function declaration is not a prototype
있습니다. void
분석법 본문 에 추가 하여 해결하는 것이 좋습니다. 내가 겪고있는 문제는 이러한 경고가 UIApplication
대리자 메서드 와 같은 시스템 API에 대해서도 발생한다는 것입니다 .
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler
이것은 다음과 같이 해결할 수 있습니다.
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)(void))completionHandler
이제 델리게이트 메서드가 장기적으로 작동하는지 또는 Apple이 void
이후 iOS 11 베타 버전에 삽입할지 궁금합니다 . void
본문을 포함하면 Xcode가 일치하지 않는 메소드 선택기 (합리적)에 대해 불평 하기 때문에 궁금 합니다. 지금까지 누군가 같은 문제가 발생 했습니까?
빈 괄호가있는 블록 선언 :
void (^)()
빈 괄호가있는 함수 포인터와 동일한 의미를 갖습니다.
void (*)()
인수가 없다는 의미는 아닙니다. 인수가 지정되지 않았으므로 다음과 같은 방법으로 버그를 호출 할 수 있으므로 버그가 발생합니다.
void (^block)() = ...
block();
block(10);
block(@"myString");
매개 변수가없는 블록을 선언 할 때는 항상 다음을 사용하십시오.
void (^)(void)
Apple은 모든 곳에서 올바르게 수행하지 않았으며 호환성 이유로 이전 API의 경우 수정하지 않을 것입니다. 최신 API로 이동할 때까지 경고를 유지해야합니다.
해당 경고를 끌 수도 있습니다 ( -Wstrict-prototypes
) :
또는 사용 #pragma
( @davidisdk 덕분에 ) :
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wstrict-prototypes"
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler {
}
#pragma clang diagnostic pop
여기 LLVM 토론 또는 openradar 의 버그를 참조하십시오 .
API의 내부 작업에는 변화가 없었으며 모든 코드는 여전히 작동합니다. 우리는 API가 정상만큼 좋지 않다는 것을 알게 될 것입니다.
'program tip' 카테고리의 다른 글
Java에서 URL 또는 URI를 작성하는 관용적 방법은 무엇입니까? (0) | 2020.07.30 |
---|---|
Vim에서 삭제 (잘라 내지 않는) 방법? (0) | 2020.07.30 |
Java의 제네릭 구현이 잘못되었다고 주장하는 이유는 무엇입니까? (0) | 2020.07.30 |
한면을 제외한 모든면에 CSS3 상자 그림자 만들기 (0) | 2020.07.29 |
모든 변수의 타입을 얻는다 (0) | 2020.07.29 |