Al usar Xcode 9, hay algunas advertencias del compilador que dicen This function declaration is not a prototype
. Sugiere agregar void
al cuerpo del método, que lo resolverá. El problema que tengo es que esas advertencias también se lanzan para UIApplication
los métodos de delegado del sistema API :
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler
Esto podría resolverse de la siguiente manera:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)(void))completionHandler
Ahora me pregunto si los métodos delegados seguirán funcionando a largo plazo o si Apple los insertará void
en versiones posteriores de iOS 11 Beta. Tengo curiosidad porque si incluyo el void
cuerpo, Xcode se quejará de que los selectores de métodos no coinciden (lo cual tiene sentido). ¿Alguien experimentó el mismo problema hasta ahora?
fuente
void (^)()
orvoid (*)()
void(^)()
), incluyen explícitamentevoid
en el paréntesis:void(^)(void)
.