Simak cara berikut ini
- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
Dengan kata kunci baru nonnull
dan nullable
anotasi kita dapat memperkayanya sebagai berikut:
- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
tapi kami juga mendapatkan peringatan ini:
Pointer tidak memiliki penentu jenis nullability (__nonnull atau __nullable)
Ini mengacu pada parameter ketiga (blok satu).
The dokumentasi tidak mencakup dengan contoh-contoh bagaimana menentukan nullability parameter blok. Ini menyatakan kata demi kata
Anda bisa menggunakan formulir yang tidak digarisbawahi nullable dan nonnull segera setelah kurung buka, selama tipenya adalah objek sederhana atau penunjuk blok.
Saya mencoba meletakkan salah satu dari dua kata kunci untuk blok (di posisi apa pun) tanpa hasil. Juga mencoba varian yang diawali garis bawah ( __nonnull
dan __nullable
).
Oleh karena itu pertanyaan saya adalah: bagaimana saya dapat menentukan semantik nullability untuk parameter blok?
NSError **
tipe? Sepertinya saya tidak bisa membuat kompiler senang.