iPhone - 我应该如何编写init方法?

ary*_*axt 2 iphone initialization objective-c nib

我应该如何为一个对NSObject进行子类化的类编写init方法

  • 假设我有一个名为的类:CustomButton子类化UIButton
  • 我有一个名为CustomButton.nib的空nib文件,其中包含一个UIButton.
  • IN界面构建器中按钮的类名设置为"CustomButton"

你会如何为这个类编写一个init方法,以便从nib文件加载?

Nim*_*rod 7

如果您需要CustomButton中的自定义初始化,请使用以下命令:

- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super initWithCoder:decoder]) {
        /* do initialization here */
    }
return self;
}
Run Code Online (Sandbox Code Playgroud)

如果直接在代码中实例化按钮,则只有在nib加载器实例化时才会调用此方法.通过代码实例化意味着你需要使用,initWithFrame所以覆盖那个.您实际上可能希望initWithCoder和initWithFrame调用相同的initAlways方法或其他东西.

此外,了解"指定初始化程序"的Objective-C概念(在目标C文档中查找)非常重要,因为它对于习惯于其他OO语言的人来说可能有点混乱.