/ / Substituindo o inicializador designado - ios, objective-c

Substituindo o inicializador designado - ios, objective-c

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 № 1

Você 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).