Quando você subclasse uma classe com uma designadainicializador (digamos, initWithNibName: bundle: uma subclasse de UIViewController) e precisa fornecer seu próprio inicializador designado, o livro Big Nerd Ranch diz para fornecer seu próprio inicializador designado e substituir o inicializador designado da superclasse para chamar seu próprio novo inicializador designado . Mas o que você faz se os parâmetros extras forem necessários?
Concretamente, algo assim:
@interface MyViewController : UIViewController
- (instancetype)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
andDummyObj:(DummyObj*)p
withDelegate:(id<DummyObjEditDelegate>)delegate;
@end
Eu acho que o ponto de substituir a superclassedelegar é configurar minha subclasse corretamente se ela está desarquivada de um arquivo de nib? Mas se alguém chamar o inicializador designado pela superclasse, ele não poderá fornecer o delegado, e eu preciso que isso seja configurado corretamente.
Obrigado.
Respostas:
0 para resposta № 1Você deve documentar os requisitos de uso doclasse, e se você precisar dos parâmetros, então você deve lançar uma exceção, se eles não são fornecidos (que sempre deve ser pego durante o desenvolvimento).