程序的代理对象是开发者自己实现的对象,主要负责监听程序的高级行为。代理机制用于避免继承复合UIKit对象(例如UIApplication对象)。使用代理不需要子类继承或重写父类的方法,只要保持复合对象不变,将需要添加或重写的代码放到代理对象中。当有事件发生,复合对象会发送消息给代理对象。 这有点像“钩子”,通过这些“钩子”来执行代码和实现需要的行为。
程序代理负责处理很多重要的系统消息没一个iPhone程序都必须有。这个对象可以是任何实现了UIApplicationDelegate协议(protocol)的对象的实例,UIApplicationDelegate协议在程序生命周期内定义了很多“钩子”和实现自定义行为的方法。尽管不要求开发者实现所有这些方法,但是下面这些方式是必须实现的:
applicationDidFinishLaunching :开发者可以用在这个方法中完成自定义的初始化任务,比如加载数据或用户界面;也可以恢复程序上一次退出时的状态。
applicationWillTerminate :开发者可以在这个方法中将重要的数据和程序状态保存起来,也可以再这个方法中进行清理工作比如删除临时文件。