繁体   English   中英

调用appdelegate方法的Objective-C队列

[英]Objective-c queue of calling appdelegate methods

UIApplicationDelegate我们有这样的方法:

- (void)applicationWillEnterForeground:(UIApplication *)application

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

几乎每次applicationWillEnterForeground都首先调用时,但是我发现有时候didReceiveLocalNotification首先调用,但是很少。 我试图找到对此的一些解释,但没有任何结果。 https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/iphoneappprogrammingguide.pdf中,我找不到此信息

我在不同设备上的iOS 8 beta和iOS 7.1中遇到了这种现象。 也许有人知道为什么或者也许在文档中有链接描述了调用appdelegate方法的这种奇怪现象

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

每当您收到本地通知并打开应用程序(在后台或前台)时,都会调用

- (void)applicationWillEnterForeground:(UIApplication *)application

仅在该应用即将成为前台应用时才会被调用。 这两种方法都没有直接的关系,因为如果您的应用程序被打开,并在前台applicationWillEnterForeground已经被调用和didReceiveLocalNotification将每次收到新通知时调用,如果应用程序被打开,但在后台只didReceiveLocalNotification将被执行,除非用户在收到应用程序后将其打开(因此也会调用applicationWillEnterForeground )。 如果该应用程序根本没有打开,并且该应用程序收到推送通知,则如果用户通过与该通知进行交互来打开该应用程序,则不会调用任何方法。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

将使用在launchOptions字典中设置的键UIApplicationLaunchOptionsRemoteNotificationKey进行调用。

通常,您不应该期望在另一个方法之前先调用它,因为这两种方法不是严格相关的,也许您想实现的目标可以通过其他方法实现。 如果是这种情况,您应该扩大目标答案,以获取有关如何执行操作的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM