原文链接:点击打开链接
nib 加载结构时 发送一个awakeFromNib消息告诉每个对象重建一个nib 归档,但只有在所有的档案中的对象
已加载和初始化。当一个对象接收awakefromnibmessage,这是保证其所有出口和行动连接已经建立。
你必须调用awakefromnib super实施给父类的运行的机会去做额外的初始化工作。虽然这种方法的默认实现不执行任何操作,许多UIKit类提供非空的实现。你可以叫super 实现在任何一点你自己的awakefromnib方法里。
实例化过程中,存档中的每个对象未归档然后初始化的方法适合于它的类型。符合nscoding协议对象(包括所有子类和处理)正在用他们的initwithcoder初始化:方法。不符合nscoding协议所有的对象都是使用init方法初始化。在所有对象被实例化和初始化,the nib 加载代码,将所有这些对象的出口和动作的连接。然后调用对象的awakefromnib方法。更详细的信息有关的步骤,然后nib在加载过程中,看到“NIB文件”在资源规划指南。
实例化过程中,档案中的每个对象未归档然后初始化的方法适合于它的类型。符合nscoding协议对象(包括所有子类和处理)正在用他们的initwithcoder初始化:方法。不符合nscoding协议所有的对象都是使用init方法初始化。在所有对象被实例化和初始化, the nib加载代码,将所有这些对象的出口和动作的连接。然后调用对象的awakefromnib方法。更详细的信息有关的步骤,然后the nib在加载过程中,看“NIB文件”在资源规划指南。
因为在对象实例化一个档案的顺序是无法保证的,你的初始化方法,不应将消息发送到其他对象的层次结构。消息发送到其他对象可以被安全地从awakefromnib方法。
通常,你实现目标需要额外的设置,不能在设计时做的awakefromnib。例如,你可以使用这个方法来定制任何控件的默认配置匹配用户的喜好或其他控件的值。你也可以使用它来恢复单个控件到你的应用的一些以前的状态。
下面来自 http://book.51cto.com/art/201209/357054.htm
《苹果开发之Cocoa编程(原书第4版)》本书系统介绍了Objective-C语言、Cocoa主要的设计模式、必要的开发工具Xcode和Instruments等,同时新引入了ARC、blocks、view-based table views和Mac应用商店,并专门开辟一章用于介绍在iOS上的基础开发。相比于之前的版本,本书在Cocoa框架新特性、新技术的基础上,更加侧重实战,也更加结合应用发展的最新趋势。本节为大家介绍awakeFromNib。
2.3.5 awakeFromNib
注意,目前完成的应用程序还是有一些瑕疵的。当应用程序启动时,应用程序只显示“Label”字符而不是一些有意思的东西。那现在来解决这个问题,让应用程序启动后显示日期和时间。
正如前面讨论过的,NIB文件是应用程序所有对象的存档。当程序启动后,对象从文件中释放,重新赋予生命,准备接收用户触发的事件信息。这种机制有些与众不同:大多数GUI的设计都是为界面布局产生源代码;相反,Interface Builder则允许开发者编辑好页面元素的状态后,把它们保存在文件里面。
在对象从文件中释放、获得生命,而没有接收到用户事件以前,所有的对象自动发送awakeFromNib消息。开发者可以添加awakeFromNib方法,用来初始化文本框的值。
下面在RandomController.m文件中添加awakeFromNib方法。现在,输入以下文本,稍后就会了解其功用了。简单而言,就是创建NSDate的实例,用于显示当前时间。然后设置文本框,将其值设置为当前日历时间对象。
文件中,方法定义的顺序并不重要,只要确保在@implementation之后、在@end之前就可以了。
awakeFromNib方法不是手动调用的,通常都是自动调用的。再次运行开发的应用程序,读者会看到如图2-23所示的时间和日期。
图2-23 完成后的应用程序 |