编写正确的初始化函数在IOS

问题描述:

这里是我的一个视图控制器初始化函数:编写正确的初始化函数在IOS

- (id) initWithStartup: (NSDictionary *) _startup investor: (NSDictionary *) _investor chat_id: (NSString *) _chat_id chat_name: (NSString *) _name 
{ 
    self = [self initWithNibName: @"PLNewChatViewController" bundle: nil]; 

    if(self) 
    { 
    } 

    return self; 
} 

是正常/必须具备以下条件:

self = [self initWithNibName: @"PLNewChatViewController" bundle: nil]; 

如若XIB文件中加载自动?

+3

首先,它应该是自我= [超级.....]答案是,这取决于。这是做这件事的正确方法之一。 – ChrisCM

+1

如果您只是调用'[super init]',它应该从主包中选择合适的名称,假设XIB与类名称相同。 –

所以,问题名称:编写正确的初始化函数在IOS

规则在子类编码初始化:

  1. 你应该调用超类的指定初始化在您指定的初始化
  2. 你应该打电话给你从其他初始化指定初始化
  3. 为什么要使用“_”的方法名称的字符,并在参数的名称,在Objective-C使用骆驼
  4. 你应该重载超指定的初始值设定项,它应该调用你指定的初始值设定项(因为客户端可以看到super的初始化项)
  5. 如果你继承了UIView,当你的视图对象随后从nib文件加载时,不会调用指定的初始值设定项。所以,你应该覆盖的initWithCoder两种方法:和 - (ID)initWithFrame:方法(的CGRect)aRect
  6. 当你打电话给你的初始化方法类的一些方法,它可以是不安全的。因为这些方法可以在你的类的子类中重写。 (您不能标记你的方法,最后,就像在Java中)所以,要小心

https://developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MultipleInitializers.html

https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/Initialization/Initialization.html