【问题标题】:Overriding designated initializer覆盖指定的初始化器
【发布时间】:2014-07-27 18:02:49
【问题描述】:

当您使用指定的初始化器(例如,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 文件中取消归档的,那么要正确配置它吗?但是如果有人调用超类指定的初始化程序,他们将无法提供委托,我需要正确设置它。

谢谢。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    您应该记录使用该类的要求,如果您需要参数,那么如果未提供参数,则应抛出异常(在开发过程中应始终拾取)。

    【讨论】:

      猜你喜欢
      • 2015-02-24
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多