วิธีใช้คีย์เวิร์ด Objective-C แบบ nonnull และ nullable ในวิธี API แบบบล็อก
พิจารณาวิธีการต่อไปนี้ - (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) ดังนั้นคำถามของฉันคือฉันจะระบุความหมายเชิงโมฆะสำหรับพารามิเตอร์บล็อกได้อย่างไร