覆盖指定的初始化程序

时间:2014-07-27 18:02:50

标签: ios objective-c

当您使用指定的初始化程序(例如,initWithNibName:bundle:UIViewController的子类)对类进行子类化,并且需要提供您自己的指定初始化程序时,Big Nerd Ranch书籍会提供您自己的指定初始化程序并覆盖指定的超类的初始化程序,用于调用您自己的新指定初始化程序。但如果需要额外的参数,你会怎么做?

具体地说,像这样:

@interface MyViewController : UIViewController

- (instancetype)initWithNibName:(NSString *)nibNameOrNil
                         bundle:(NSBundle *)nibBundleOrNil
                     andDummyObj:(DummyObj*)p
                   withDelegate:(id<DummyObjEditDelegate>)delegate;

@end

我想重写超类委托的意思是如果它是从nib文件中取消归档的话,是否正确配置我的子类?但如果有人调用超类指定的初始化程序,他们将无法提供委托,我需要正确设置。

感谢。

1 个答案:

答案 0 :(得分:0)

您应该记录使用该类的要求,如果您需要参数,那么如果没有提供参数,则应该抛出异常(在开发过程中应该总是这样做。)