Xcode 9의 "이 함수 선언은 프로토타입이 아닙니다" 경고
Xcode 9를 사용할 때 다음과 같은 몇 가지 컴파일러 경고가 있습니다.This function declaration is not a prototype
추가할 것을 제안합니다.void
메서드 본문으로 이동하면 해결됩니다.내가 안고 있는 문제는 그 경고들이 시스템 API에 대해서도 던져진다는 것입니다.UIApplication
대리인-대리인:
- (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
이제 저는 대리인 방법이 장기적으로 여전히 효과가 있을지 아니면 애플이 그것을 삽입할지 궁금합니다.void
최신 iOS 11 베타 버전.저는 궁금합니다 왜냐하면 만약 제가 포함한다면.void
body, Xcode는 Method-Selector가 일치하지 않는 것에 대해 불평할 것입니다.지금까지 동일한 문제를 경험한 사람이 있습니까?
빈 괄호가 있는 블록 선언:
void (^)()
는 빈 괄호가 있는 함수 포인터와 동일한 의미를 가집니다.
void (*)()
인수가 없는 것은 아닙니다.이는 인수가 지정되지 않음을 의미하므로 다음과 같은 방법으로 호출할 수 있으므로 버그로 가는 길을 열어줍니다.
void (^block)() = ...
block();
block(10);
block(@"myString");
매개 변수가 없는 블록을 선언할 때는 항상 다음을 사용합니다.
void (^)(void)
Apple은 모든 곳에서 이 작업을 제대로 수행하지 못했으며 호환성을 이유로 이전 API에 대해 수정하지 않았을 것입니다.새로운 API로 이동할 때까지 경고를 유지해야 합니다.
또한 해당 경고를 해제할 수 있습니다.-Wstrict-prototypes
):
#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에 대한 논의 또는 오픈 레이더의 버그를 참조하십시오.
API의 내부 작업에는 변화가 없으며 모든 코드는 계속 작동합니다.우리는 API가 필요한 만큼 좋지 않다는 것만 알게 될 것입니다.
언급URL : https://stackoverflow.com/questions/44473146/this-function-declaration-is-not-a-prototype-warning-in-xcode-9
'source' 카테고리의 다른 글
분기 전환 및 커밋하지 않고 변경 사항 무시 (0) | 2023.05.15 |
---|---|
WPF의 숫자 데이터 입력 (0) | 2023.05.15 |
MongoDB에서 검색/프로젝션을 수행할 때 필드 이름을 변경하려면 어떻게 해야 합니까? (0) | 2023.05.15 |
특정 열의 날짜 형식을 "yyyy-mm-dd"로 설정하는 VBA 코드 (0) | 2023.05.15 |
SQL Server - SQL 스크립트 실행 중지 또는 중단 (0) | 2023.05.15 |