我最近研究了一些基于cocoa的开源项目。我看到很多程序都在AuthKeFiNIB中初始化代码,很少使用指定的初始化器。我习惯这样做:
在重写的指定初始化器中:做所有非笔尖的东西
在awakefromnib:做所有与nib相关的事情
这种方法是错误的吗?
最佳答案
是的,这是正确的,所有与nib相关的事情都应该用awakefromnib方法来完成。在调用它的时候,您已经从nib初始化并加载了视图,所以您已经可以配置和使用它了。
对于初始值设定项,请检查以下问题:iOS: UIView subclass init or initWithFrame:?
指定的初始值设定项是所有其他初始值设定项都必须调用的初始值设定项。uiview和子类有点不寻常,因为它们实际上有两个这样的初始值设定项:-initWithFrame:和-initWithcoder:,具体取决于视图的创建方式。如果要在代码中实例化视图,则应重写-initWithFrame;如果要从NIB加载视图,则应重写-initWithcoder。或者,您可以将代码放在第三个方法中,并重写这两个初始值设定项,以便它们调用您的第三个方法。事实上,这通常是推荐的策略。