Saat menggunakan Xcode 9, ada beberapa peringatan compiler yang mengatakan This function declaration is not a prototype
. Ia menyarankan untuk menambah void
tubuh metode, yang akan menyelesaikannya. Masalah yang saya alami adalah bahwa peringatan tersebut juga dilemparkan untuk sistem-API seperti UIApplication
metode delegasi:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)())completionHandler
Ini dapat diselesaikan dengan cara berikut:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
withResponseInfo:(NSDictionary *)responseInfo
completionHandler:(void (^)(void))completionHandler
Sekarang saya bertanya-tanya apakah metode delegasi akan tetap berfungsi dalam jangka panjang atau Apple akan memasukkan void
di versi iOS 11 Beta nanti. Saya penasaran karena jika saya menyertakan void
tubuh, Xcode akan mengeluh tentang pemilihan metode yang tidak cocok (yang masuk akal). Apakah seseorang mengalami masalah yang sama sejauh ini?
sumber
void (^)()
orvoid (*)()
void(^)()
), secara eksplisit termasukvoid
dalam kurung:void(^)(void)
.