Lorsque vous utilisez Xcode 9, certains avertissements du compilateur indiquent This function declaration is not a prototype
. Il suggère d'ajouter void
au corps de la méthode, ce qui le résoudra. Le problème que je rencontre est que ces avertissements sont également lancés pour les API système comme les UIApplication
méthodes de délégation:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler
Cela pourrait être résolu par ce qui suit:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)(void))completionHandler
Maintenant, je me demande si les méthodes de délégué fonctionneront toujours à long terme ou si Apple insérera les void
versions ultérieures d'iOS 11 Beta. Je suis curieux parce que si j'inclus le void
corps, Xcode se plaindra de l'inadéquation des sélecteurs de méthode (ce qui a du sens). Quelqu'un a-t-il rencontré le même problème jusqu'à présent?
la source
void (^)()
orvoid (*)()
void(^)()
), inclure explicitementvoid
dans les parenthèses:void(^)(void)
.