/ / Existe um Objective-C equivalente ao fatalError do Swift? - ios, objective-c, swift, override, subclasse

Existe um Objective-C equivalente ao fatalError do Swift? - ios, objective-c, swift, override, subclasse

Eu quero descartar o método init padrão da superclasse.Eu posso conseguir isso facilmente com fatalError em Swift:

class subClass:NSObject{
private var k:String!

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

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

Como posso fazer isso em Objective-C?

Respostas:

19 para resposta № 1

Você pode levantar uma exceção neste caso:

Algo assim. Referir isto

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

Ou você também pode usar declaração de afirmação.

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

2 para resposta № 2

NSAssert(NO, @"balabala");

ou

- (instancetype)init NS_UNAVAILABLE;


1 para resposta № 3

Apenas ligue NSObject"s doesNotRecognizeSelector: método. Você escreveria:

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

Onde _cmd é o parâmetro oculto para cada método cujo valor é o seletor do método.