Podczas korzystania z Xcode 9 pojawiają się ostrzeżenia kompilatora This function declaration is not a prototype
. Sugeruje dodanie void
do treści metody, która rozwiąże problem. Problem, który mam, polega na tym, że te ostrzeżenia są również generowane dla UIApplication
metod interfejsu API systemu, takich jak metody delegatów:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler
Można to rozwiązać w następujący sposób:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)(void))completionHandler
Teraz zastanawiam się, czy metody delegowania będą nadal działać na dłuższą metę, czy Apple wstawi void
w późniejszych wersjach iOS 11 Beta. Jestem ciekawy, ponieważ jeśli void
dołączę body, Xcode będzie narzekał na niedopasowanie selektorów metod (co ma sens). Czy ktoś do tej pory miał ten sam problem?
źródło
void (^)()
orvoid (*)()
void(^)()
), wyraźnie zawieraćvoid
w nawiasach:void(^)(void)
.