【发布时间】:2013-06-02 07:39:44
【问题描述】:
是否会出现applicationWillResignActive: 在application:didFinishLaunchingWithOptions: 结束之前被调用的情况?
基本上,我可以指望application:didFinishLaunchingWithOptions: 在第一次触发applicationWillResignActive 之前总是完成吗?
【问题讨论】:
是否会出现applicationWillResignActive: 在application:didFinishLaunchingWithOptions: 结束之前被调用的情况?
基本上,我可以指望application:didFinishLaunchingWithOptions: 在第一次触发applicationWillResignActive 之前总是完成吗?
【问题讨论】:
是的,-application:didFinishLaunching: 将始终在 -applicationWillResignActive: 之前调用
查看此图片了解更多详情:
【讨论】:
Apple 在“应用程序状态和多任务处理”部分中的 iOS App Programming Guide 表明 applicationWillResignActive: 被调用作为您的应用程序通过处理运行循环处理事件的一部分,该运行循环仅在 @987654323 之后开始@ 已完成。
此外,应用程序生命周期事件总是发生在主线程上,因此其中一个不可能抢占另一个或彼此并行运行。
【讨论】:
runloop 可以递归调用。
application:disFinishLaunchigWithOptions: 的假设实现可以运行 runloop,进而允许从方法内传递通知。
以下人为设计的示例将让 run loop 运行,但永远不会返回:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
while (YES)
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
【讨论】: