iOS:每个初始化程序何时用于表格单元格? init,initWithFrame,initWithCoder,initWithStyle

时间:2012-02-08 16:20:31

标签: ios

我最近做了一个表格单元子类的程序化alloc / init,并且使用了一些NSLog,我能够知道几乎所有的初始化程序都被调用了,即使我所做的只是alloc / init,如果我记得的话正确。

初​​始化
initWithStyle

这是什么逻辑?
哪一个叫哪个?

2 个答案:

答案 0 :(得分:1)

所有内容都追溯到initUITableViewCellNSObject的子类,因此它具有init方法。

initWithFrame已被弃用,已经有一段时间了(自iOS 3开始)。你不应该使用它。

它在iOS 3中被替换为initWithStyle,您可以使用它来指示您想要创建的单元格样式。

initWithCoder是另一种NSObject方法,是NSCoding协议的一部分。同样,您可以在UITableViewCell中看到它,因为它是NSObject的子类。 initWithCoder用于取消归档对象(例如,您可能已将对象直接保存到文件中)。

答案 1 :(得分:0)

您可以通过查看日志消息的显示顺序来判断哪些呼叫。

Objective-C代码中的一个常见模式是拥有一个“指定的初始化器”,它实际上创建并返回一个已配置的类实例。所有其他初始化程序都会为指定的初始化程序调用未为调用程序指定的某些参数的固定值,或者在指定的初始化程序返回后提供进一步的配置。