NS_UNAVAILABLE
- (instancetype)init NS_UNAVAILABLE;
यह अनुपलब्ध विशेषता का एक छोटा संस्करण है। यह पहली बार macOS 10.7 और iOS 5 में दिखाई दिया । इसे NSObjCRuntime.h में परिभाषित किया गया है #define NS_UNAVAILABLE UNAVAILABLE_ATTRIBUTE।
एक संस्करण है जो केवल स्विफ्ट ग्राहकों के लिए विधि को निष्क्रिय करता है , ओब्जेक्ट कोड के लिए नहीं:
- (instancetype)init NS_SWIFT_UNAVAILABLE;
unavailable
किसी भी कॉल इनिट पर कंपाइलर एररunavailable जेनरेट करने के लिए हेडर में विशेषता जोड़ें ।
-(instancetype) init __attribute__((unavailable("init not available")));

यदि आपके पास कोई कारण नहीं है, तो बस टाइप करें __attribute__((unavailable)), या यहां तक कि __unavailable:
-(instancetype) __unavailable init;
doesNotRecognizeSelector:
doesNotRecognizeSelector:NSInvalidArgumentException बढ़ाने के लिए उपयोग करें । "रनटाइम सिस्टम इस विधि को तब भी आमंत्रित करता है जब कोई ऑब्जेक्ट एक एसेलेक्टर संदेश प्राप्त करता है जो इसका जवाब या आगे नहीं दे सकता है।"
- (instancetype) init {
[self release];
[super doesNotRecognizeSelector:_cmd];
return nil;
}
NSAssert
NSAssertNSInternalInconsistencyException को फेंकने और एक संदेश दिखाने के लिए उपयोग करें :
- (instancetype) init {
[self release];
NSAssert(false,@"unavailable, use initWithBlah: instead");
return nil;
}
raise:format:
raise:format:अपने स्वयं के अपवाद को फेंकने के लिए उपयोग करें :
- (instancetype) init {
[self release];
[NSException raise:NSGenericException
format:@"Disabled. Use +[[%@ alloc] %@] instead",
NSStringFromClass([self class]),
NSStringFromSelector(@selector(initWithStateDictionary:))];
return nil;
}
[self release]जरूरत है क्योंकि ऑब्जेक्ट पहले से ही allocated था । एआरसी का उपयोग करते समय संकलक आपके लिए इसे कॉल करेगा। किसी भी मामले में, चिंता करने के लिए कुछ नहीं जब आप जानबूझकर निष्पादन को रोकते हैं।
objc_designated_initializer
यदि आप initनिर्दिष्ट इनिशियलाइज़र के उपयोग को बाध्य करने के लिए अक्षम करना चाहते हैं , तो इसके लिए एक विशेषता है:
-(instancetype)myOwnInit NS_DESIGNATED_INITIALIZER;
यह एक चेतावनी उत्पन्न करता है जब तक कि कोई अन्य इनिशियलाइज़र विधि myOwnInitआंतरिक रूप से कॉल न करे । अगले एक्सकोड रिलीज (मुझे लगता है) के बाद विवरण एडॉप्टिंग मॉडर्न ऑब्जेक्टिव-सी में प्रकाशित किया जाएगा ।
NS_UNAVAILABLE। मैं आमतौर पर आपसे इस दृष्टिकोण का उपयोग करने का आग्रह करूंगा। क्या ओपी उनके स्वीकृत जवाब को संशोधित करने पर विचार करेंगे? यहां अन्य उत्तर बहुत उपयोगी विवरण प्रदान करते हैं, लेकिन इसे प्राप्त करने का पसंदीदा तरीका नहीं है।