2016-05-17 3 views
8

Я хочу сбросить по умолчанию суперкласса инициализации method.I может добиться этого легко с fatalError в Swift:Есть ли Objective-C, эквивалентный FatalError от Swift?

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: метод NSObject «s. Вы должны написать:

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

где _cmd является скрытым параметром каждого метода, значение которого селектор метода.

2

NSAssert(NO, @"balabala");

или

- (instancetype)init NS_UNAVAILABLE;

Смежные вопросы