我最近研究了一些基于Cocoa的开源项目。我看到很多程序在awakeFromNib中都有初始化代码,很少使用指定的初始化器。我习惯这样做:
这种做法不对吗?
发布于 2013-08-06 08:00:55
是的,这是正确的,所有与nib相关的东西都应该在awakeFromNib方法中完成。当它被调用时,您已经从nib初始化并加载了视图,因此您可以配置和使用它。
对于初始化程序,请检查以下问题:iOS: UIView subclass init or initWithFrame:?
指定的初始化程序是所有其他初始化程序都必须调用的初始化程序。UIView和子类有点不寻常,因为它们实际上有两个这样的初始化器:-initWithFrame:和-initWithCoder:,这取决于视图是如何创建的。如果要在代码中实例化视图,则应该重写-initWithFrame:;如果要从nib加载视图,则重写-initWithCoder:。或者,您可以将代码放在第三个方法中,并覆盖这两个初始化器,以便它们调用您的第三个方法。事实上,这通常是推荐的策略。
https://stackoverflow.com/questions/18074601
复制相似问题