使用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
现在,我想知道委托方法是否仍然可以长期使用,或者Apple将void
在更高的iOS 11 Beta版本中插入。我很好奇,因为如果包含void
主体,Xcode会抱怨方法选择器不匹配(这很有意义)。到目前为止,有人遇到过同样的问题吗?