2016-05-17 7 views
8

Ich will übergeordnete Klasse der Standard init method.I verwerfen diese mit fatalError in Swift leicht erreichen können:Gibt es ein Objective-C-Äquivalent zu Swift's fatalError?

class subClass:NSObject{ 
    private var k:String! 

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

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

Wie kann ich es in Objective-C?

Antwort

17

Sie können eine Ausnahme in diesem Fall erhöhen:

Etwas Ähnliches. Siehe hierzu

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

Oder Sie können sogar die assert-Anweisung verwenden.

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

Rufen Sie einfach NSObject ‚s doesNotRecognizeSelector: Methode. Sie würden schreiben:

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

wo _cmd jedes Verfahren, dessen Wert die Wähler des Verfahrens wird der verborgene Parameter ist.

2

NSAssert(NO, @"balabala");

oder

- (instancetype)init NS_UNAVAILABLE;