Ao usar o Xcode 9, existem alguns avisos do compilador dizendo This function declaration is not a prototype
. Sugere adicionar void
ao corpo do método, o que o resolverá. O problema que estou tendo é que esses avisos também são lançados para UIApplication
métodos delegados semelhantes à API do sistema :
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler
Isso pode ser resolvido da seguinte maneira:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)(void))completionHandler
Agora, estou me perguntando se os métodos delegados ainda funcionarão em longo prazo ou se a Apple inserirá o void
nas versões beta do iOS 11 posteriores. Estou curioso porque se eu incluir o void
corpo, o Xcode reclamará sobre seletores de método incompatíveis (o que faz sentido). Alguém teve o mesmo problema até agora?
fonte
void (^)()
orvoid (*)()
void(^)()
), incluir explicitamentevoid
nos parênteses:void(^)(void)
.