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 № 1Você 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.