使用UIApplicationDidFinishLaunchingNotification

时间:2010-12-05 16:59:12

标签: iphone objective-c cocoa-touch ios uikit

  

在应用程序完成启动后立即发布。

这就是Apple文档所说的。但我没有看到对象如何收到此通知。它必须将自己添加为观察者,但最早可以通过application:didFinishLaunchingWithOptions:方法实现。那时,通知已经发布。我没有看到这个通知有用,或者我忽略了什么?

5 个答案:

答案 0 :(得分:4)

如果您有在+load初始化自己的课程或类别,他们也可以利用这个机会等待UIApplicationDidFinishLaunchingNotification。这样,某些对象可以执行各种级别的“自动”行为,而无需将任何代码插入到应用程序的委托中。

答案 1 :(得分:3)

假设您在“主Nib文件”的根目录中有一个“MyController”类的对象(在目标的属性中指定 - 默认名称为“MainWindow.xib”)。当您的应用程序启动并加载此主nib文件时,nib文件中的所有对象都会收到-awakeFromNib方法,包括MyController实例。在那里,实例可以将自己添加为UIApplicationDidFinishLaunchingNotification的观察者。当主Nib文件的加载完成(以及其他一些启动内容),并且UIApplicationDelegate收到-application:didFinishLaunchingWithOptions:消息时,MyController实例会收到通知。

另一个(可能不是很常见)注册此通知的情况是,如果您在调用UIApplicationMain()之前直接在main.m文件中实例化了一些Objective-C类,并想知道您的应用程序何时实际执行了启动。

答案 2 :(得分:0)

为什么你需要寻找这个通知?

当然,你可以从应用程序调用你想要的任何方法:didFinishLaunchingWithOptions:方法。

答案 3 :(得分:0)

接收此通知的委托对象在加载应用程序.xib文件期间进行实例化并注册为应用程序委托。如果要在加载.xibs后进行其他设置,可以在此处执行此操作。

答案 4 :(得分:0)

有时它只是方便。

您可以让控制器自己负责响应生命周期事件(比如变为非活动状态,进入后台等),而不是让您的委托,呃,委托一切,从而形成一个伟大的依赖毛球。