2016-05-17 13 views
8

私はmethod.Iのinitスーパークラスのデフォルトは、スウィフトでfatalErrorで簡単にこれを達成することができ破棄する:SwiftのfatalErrorに相当するObjective-Cがありますか?

class subClass:NSObject{ 
    private var k:String! 

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

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

私はObjective-Cでそれをどのように行うことができますか?

答えて

17

この場合、例外を発生させることができます。

このようなものです。これを参照してください

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

また、assertステートメントを使用することもできます。

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

doesNotRecognizeSelector:メソッドを呼び出してください。次のように記述します。_cmdは値方式の選択であるすべてのメソッドに隠しパラメータである

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

2

NSAssert(NO, @"balabala");

又は

- (instancetype)init NS_UNAVAILABLE;

関連する問題