พิจารณาวิธีการต่อไปนี้
- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
ด้วยคำหลักใหม่nonnull
และnullable
คำอธิบายประกอบเราสามารถเพิ่มคุณค่าได้ดังนี้:
- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
แต่เรายังได้รับคำเตือนนี้:
ตัวชี้ไม่มีตัวระบุประเภท nullability (__nonnull หรือ __nullable)
หมายถึงพารามิเตอร์ที่สาม (บล็อกที่หนึ่ง)
เอกสารไม่ครอบคลุมกับตัวอย่างวิธีการระบุ nullability ของพารามิเตอร์บล็อก มันระบุคำต่อคำ
คุณสามารถใช้รูปแบบที่ไม่ขีดเส้นใต้ที่เป็นค่าว่างและไม่เป็นค่าว่างได้ทันทีหลังจากวงเล็บเปิดตราบใดที่ชนิดนั้นเป็นวัตถุธรรมดาหรือตัวชี้บล็อก
ฉันลองใส่หนึ่งในสองคำหลักสำหรับบล็อก (ในตำแหน่งใดก็ได้) โดยไม่มีโชค ลองใช้รูปแบบที่นำหน้าขีดล่างด้วย ( __nonnull
และ__nullable
)
ดังนั้นคำถามของฉันคือฉันจะระบุความหมายเชิงโมฆะสำหรับพารามิเตอร์บล็อกได้อย่างไร
NSError **
ประเภท? ดูเหมือนจะทำให้คอมไพเลอร์มีความสุขไม่ได้