निम्नलिखित विधि पर विचार करें
- (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;
लेकिन हमें यह चेतावनी भी मिलती है:
सूचक एक अशक्तता प्रकार विनिर्देशक (__nonnull या __nullable) याद कर रहा है
यह तीसरे पैरामीटर (ब्लॉक एक) को संदर्भित करता है।
प्रलेखन ब्लॉक मापदंडों के nullability निर्दिष्ट करने का तरीका उदाहरण के साथ कवर नहीं करता। यह शब्दशः बताता है
जब तक कोई साधारण वस्तु या ब्लॉक पॉइंटर न हो, तब तक आप एक खुले कोष्ठक के तुरंत बाद अशोभनीय रूप से अशोभनीय और अशक्त रूप में उपयोग कर सकते हैं।
मैंने बिना किसी भाग्य के ब्लॉक (किसी भी स्थिति में) के लिए दो में से एक कीवर्ड डालने की कोशिश की। अंडरस्कोर उपसर्ग वाले वेरिएंट ( __nonnull
और __nullable
) को भी आज़माया ।
इसलिए मेरा सवाल है: मैं ब्लॉक मापदंडों के लिए अशक्तता शब्दार्थ को कैसे निर्दिष्ट कर सकता हूं?
NSError **
प्रकार के साथ कैसे काम करता है ? मैं संकलक को खुश करने के लिए प्रतीत नहीं कर सकता।