为什么不调用自定义基于nib的表单元格的init方法

Bes*_*esi 7 objective-c nib

我有一个基于nib的表视图单元格,我在Interface builder中创建.我设置了FooTableViewCell从中扩展的表视图单元格的类UITableViewCell.

FooTableViewCell我覆盖这样的init方法:

-(id)init{

    if ((self = [super init])){
      // My init code here
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我现在希望在实例化时调用它.但是会显示表视图,但从不调用该方法.

我可以解决这个问题,但我想完全理解它,对我而言,如果没有init调用方法,对象是如何生存的还不清楚.

Jos*_*erg 19

当取消归档时,初始化会经历一个稍微不同的路径.

而不是-(id)init被调用-(id)initWithCoder:(NSCoder*)aDecoder将被调用.此时,如果您需要访问可以覆盖的插座,则可以连接插座,这些插座-(void)awakeFromNib将在连接对象后调用.


Vla*_*mir 7

从nib文件加载对象时,会调用其-awakeFromNib方法 - 您可以将初始化代码放在那里:

- (void)awakeFromNib{
   // Init code
}
Run Code Online (Sandbox Code Playgroud)