(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
方法?因为我需要基于推送消息处理数据并使用Core Data存储在本地数据库表中。如果我在这种方法中进行核心数据操作,它会不会打扰用户界面?
答案 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
方法在单独的后台线程上运行,因为当我们使用我们的应用程序而不是应用程序收到的通知时所以它意味着这个方法在不同的后台线程上运行。