0

这是我的视图控制器的初始化函数:

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

4

1 回答 1

1

所以,问题名称:Writing the proper init function in IOS

在子类中编码初始化程序的规则:

  1. 您应该在指定的初始化程序中调用 supers 指定的初始化程序
  2. 您应该从其他初始化程序调用您指定的初始化程序
  3. 为什么在方法名称和参数名称中使用“_”字符,在 Objective-C 中使用驼峰式
  4. 你应该重写 supers 指定的初始化器,它应该调用你指定的初始化器(因为客户端可以看到 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

于 2013-08-21T14:43:13.013 回答