/ / Czy istnieje odpowiednik Objective-C do fatalError Swift? - ios, target-c, swift, override, subclass

Czy istnieje odpowiednik Objective-C do fatalnego błędu Swift? - ios, target-c, swift, override, subclass

Chcę odrzucić domyślną metodę init nadklasy. Mogę to łatwo osiągnąć fatalError w Swift:

class subClass:NSObject{
private var k:String!

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

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

Jak mogę to zrobić w Objective-C?

Odpowiedzi:

19 dla odpowiedzi nr 1

W tym przypadku możesz zgłosić wyjątek:

Coś takiego. Zobacz to

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

Lub możesz nawet użyć instrukcji assert.

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

2 dla odpowiedzi nr 2

NSAssert(NO, @"balabala");

lub

- (instancetype)init NS_UNAVAILABLE;


1 dla odpowiedzi nr 3

Zadzwoń NSObject"s doesNotRecognizeSelector: metoda. Napisalibyście:

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

gdzie _cmd jest ukrytym parametrem dla każdej metody, której wartością jest selektor metody.