在IOS中编写正确的init函数

时间:2013-08-21 14:23:05

标签: ios objective-c ios6 ios4

以下是我对视图控制器的初始化函数:

- (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文件?

1 个答案:

答案 0 :(得分:1)

所以,问题名称:在IOS中编写正确的init函数

子类中初始值设定项的编码规则:

  1. 您应该在指定的初始化程序中调用超级指定的初始值设定项
  2. 您应该从其他初始化程序中调用指定的初始值设定项
  3. 为什么在方法名称和参数名称中使用“_”字符,在Objective-C中使用camel case
  4. 您应该覆盖超级指定的初始化程序,它应该调用您指定的初始化程序(因为客户端可以看到超级的初始化程序)
  5. 如果您继承UIView,则随后从nib文件加载视图对象时不会调用指定的初始化程序。所以你应该重写两个方法initWithCoder:和 - (id)initWithFrame:(CGRect)aRect
  6. 在初始化方法中调用类的某些方法时,它可能不安全。因为这些方法可以在类的子类中重写。 (你不能将你的方法标记为final,就像在Java中一样)所以要小心
  7. 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