ios 7推送通知didReceiveRemoteNotification方法在UI线程或单独的线程上运行?

时间:2014-01-03 05:13:40

标签: ios objective-c ios7

在UI线程或单独的后台线程上运行

(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler方法?因为我需要基于推送消息处理数据并使用Core Data存储在本地数据库表中。如果我在这种方法中进行核心数据操作,它会不会打扰用户界面?

3 个答案:

答案 0 :(得分:0)

每个应用程序委托方法仅在主线程上运行。尽量避免在那边做大任务。如果它的小任务它不会打扰你。

答案 1 :(得分:0)

application(_:didReceiveRemoteNotification:fetchCompletionHandler:)UIKit的一部分,它与UI线程相关:

  

除非另有说明,否则仅从应用程序的主线程或主调度队列中使用UIKit类。此限制特别适用于从UIResponder派生的类,或涉及以任何方式操纵应用程序用户界面的类。

UIKit通过从UI线程调用此方法来遵循其自己的规则。这样可以轻松使用其他UIKey方法,但是您有责任确保您的方法能够快速返回。

答案 2 :(得分:-2)

(void)application:(UIApplication *)application 
               didReceiveRemoteNotification:(NSDictionary *)userInfo 
                    fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

方法在单独的后台线程上运行,因为当我们使用我们的应用程序而不是应用程序收到的通知时所以它意味着这个方法在不同的后台线程上运行。