2016-05-17 9 views
8

मैं त्यागने के लिए सुपर-क्लास के डिफ़ॉल्ट method.I init स्विफ्ट में fatalError के साथ आसानी से इस लक्ष्य को हासिल कर सकते हैं:स्विफ्ट के घातक त्रुटि के बराबर कोई उद्देश्य-सी है?

class subClass:NSObject{ 
    private var k:String! 

    override init(){ 
    fatalError("init() has not been implemented") 
    } 

    init(kk:String){ 
    k = kk 
    } 
}  

मैं इसे कैसे कर सकते हैं ऑब्जेक्टिव-सी में?

उत्तर

17

आप इस मामले में एक अपवाद को बढ़ा सकते हैं:

कुछ इस तरह। इस

[NSException raise:@"InitNotImplemented" format:@"Subclasses must implement a valid init method"]; 

संदर्भ लें या फिर भी तुम भी ज़ोर कथन का उपयोग कर सकते हैं।

NSAssert(NO, @"Subclasses must implement init"); 
0

बस NSObject के doesNotRecognizeSelector: विधि कॉल। आप लिखते थे:

- (instancetype) init 
{ 
    [self doesNotRecognizeSelector:_cmd]; 
} 

जहां _cmd हर विधि जिसका मूल्य विधि के चयनकर्ता है छिपा पैरामीटर है।

2

NSAssert(NO, @"balabala");

या

- (instancetype)init NS_UNAVAILABLE;

संबंधित मुद्दे