ios - 在 IOS 中编写正确的 init 函数

标签 ios objective-c ios6 ios4

这是我的 View Controller 的初始化函数:

- (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 文件应该自动加载吗?

最佳答案

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

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

  1. 您应该在指定初始化程序中调用 super 指定初始化程序
  2. 您应该从其他初始化程序调用您指定的初始化程序
  3. 为什么在方法名称和参数名称中使用“_”字符,在 Objective-C 中使用驼峰式大小写
  4. 你应该重写super指定的初始化器,它应该调用你指定的初始化器(因为客户端可以看到super的初始化器)
  5. 如果您对 UIView 进行子类化,则当随后从 nib 文件加载 View 对象时,不会调用指定的初始值设定项。所以你应该重写两个方法 initWithCoder: 和 - (id)initWithFrame:(CGRect)aRect
  6. 当您在初始化方法中调用类的某些方法时,它可能是不安全的。因为这些方法可以在您的类的子类中重写。 (你不能像 Java 那样将你的方法标记为 Final)所以要小心

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

关于ios - 在 IOS 中编写正确的 init 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360066/

相关文章:

ios - 如何在 ios 中使用动态键对 NSMutableDictionary 进行排序?

ios - UITextView UIResponderStandardEditActions 文本格式化切换状态

ios - UISearchBar Appearance 下拉时仍显示 1px 边框

ios - 如何以编程方式在 UINavigationController 中显示第二个模态 ViewController

iOS Base 本地化未用于缺少 key

ios - 在 [UIViewControllerTransitionCoordinator animateAlongsideTransition] 中指定动画选项

iOS 应用商店 NSBluetoothAlwaysUsageDescription - 拒绝

ios - 直接从 WKWebView 获取已加载的 PDF,无需再次下载

ios - Swift AVPlayerViewController 完成按钮关闭应用程序

objective-c - 如何以编程方式在 iPad 上显示导航 Controller 的下拉列表?