Hãy xem xét phương pháp sau
- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
Với các từ khóa mới nonnull
và nullable
chú thích, chúng ta có thể làm phong phú nó như sau:
- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
nhưng chúng tôi cũng nhận được cảnh báo này:
Con trỏ thiếu bộ định nghĩa kiểu nullability (__nonnull hoặc __nullable)
Nó đề cập đến tham số thứ ba (khối một).
Các tài liệu không bao gồm với các ví dụ làm thế nào để xác định giá trị null của các thông số khối. Nó nói nguyên văn
Bạn có thể sử dụng các biểu mẫu không gạch dưới có giá trị nullable và nonnull ngay sau dấu ngoặc đơn đang mở, miễn là kiểu đó là một đối tượng đơn giản hoặc con trỏ khối.
Tôi đã thử đặt một trong hai từ khóa cho khối (ở bất kỳ vị trí nào) mà không gặp may. Cũng đã thử các biến thể có tiền tố gạch dưới ( __nonnull
và __nullable
).
Do đó, câu hỏi của tôi là: làm cách nào để chỉ định ngữ nghĩa nullability cho các tham số khối?
NSError **
loại? Tôi dường như không thể làm cho trình biên dịch hài lòng.