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 1W 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.