При использовании Xcode 9, есть некоторые предупреждения компилятора о том, что This function declaration is not a prototype
. Он предлагает добавить void
в тело метода, что разрешит его. Проблема, с которой я столкнулся, заключается в том, что эти предупреждения также UIApplication
для системного 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. Мне любопытно, потому что, если я включу void
тело, Xcode будет жаловаться на несоответствие селекторов метода (что имеет смысл). Кто-то испытывал ту же проблему до сих пор?