专栏名称: Adrenine
iOS开发
目录
相关文章推荐
51好读  ›  专栏  ›  Adrenine

awakeFromNib与一些相似的初始化方法

Adrenine  · 掘金  ·  · 2017-12-13 08:46

正文

awakeFromNib与一些相似的初始化方法 (1)awakeFromNib和initWithCoder的差别: awakeFromNib 从xib或者storyboard加载完毕就会调用 initWithCoder: 只要对象是从文件解析来的,就会调用 同时存在会先调用initWithCoder

(2)initWithCoder: & initWithFrame: initWithCoder:使用文件加载的对象调用(如从xib或stroyboard中创建) initWithFrame:使用代码加载的对象调用(使用纯代码创建) 注意:所以为了同时兼顾从文件和从代码解析的对象初始化,要同时在initWithCoder和 initWithFrame 中进行初始化

nib 加载结构时 发送一个awakeFromNib消息告诉每个对象重建一个nib 归档,但只有在所有的档案中的对象已加载和初始化。当一个对象接收awakefromnibmessage,这是保证其所有出口和行动连接已经建立。

你必须调用awakefromnib super实施给父类的运行的机会去做额外的初始化工作。虽然这种方法的默认实现不执行任何操作,许多UIKit类提供非空的实现。你可以叫super 实现在任何一点你自己的awakefromnib方法里。

实例化过程中,存档中的每个对象未归档然后初始化的方法适合于它的类型。符合nscoding协议对象(包括所有子类和处理)正在用他们的initwithcoder初始化:方法。不符合nscoding协议所有的对象都是使用init方法初始化。在所有对象被实例化和初始化,the nib 加载代码,将所有这些对象的出口和动作的连接。然后调用对象的awakefromnib方法。更详细的信息有关的步骤,然后nib在加载过程中,看到“NIB文件”在资源规划指南。

// 先归档方法
-(id)initWithCoder:(NSCoder *)aDecoder {
  self = [super initWithCoder:aDecoder];
  if






请到「今天看啥」查看全文