我最近做了一个表格单元子类的程序化alloc / init,并且使用了一些NSLog,我能够知道几乎所有的初始化程序都被调用了,即使我所做的只是alloc / init,如果我记得的话正确。
初始化
initWithStyle
这是什么逻辑?
哪一个叫哪个?
答案 0 :(得分:1)
所有内容都追溯到init
。 UITableViewCell
是NSObject
的子类,因此它具有init
方法。
initWithFrame
已被弃用,已经有一段时间了(自iOS 3开始)。你不应该使用它。
它在iOS 3中被替换为initWithStyle
,您可以使用它来指示您想要创建的单元格样式。
initWithCoder
是另一种NSObject
方法,是NSCoding
协议的一部分。同样,您可以在UITableViewCell
中看到它,因为它是NSObject
的子类。 initWithCoder
用于取消归档对象(例如,您可能已将对象直接保存到文件中)。
答案 1 :(得分:0)
您可以通过查看日志消息的显示顺序来判断哪些呼叫。
Objective-C代码中的一个常见模式是拥有一个“指定的初始化器”,它实际上创建并返回一个已配置的类实例。所有其他初始化程序都会为指定的初始化程序调用未为调用程序指定的某些参数的固定值,或者在指定的初始化程序返回后提供进一步的配置。