在后台线程上查找backgroundTimeRemaining

时间:2017-10-12 03:37:48

标签: ios objective-c multithreading

我的iOS应用程序有一些在后台线程上运行的数据处理。数据处理可能需要一些时间才能完成,因此我会定期检查backgroundTimeRemaining以查看是否需要在应用程序被杀之前进行整理并停止数据处理。

为此我打电话:

[[UIApplication sharedApplication] backgroundTimeRemaining]

使用最新的XCode,现在会导致运行时错误:

Main Thread Checker: UI API called on a background thread: -[UIApplication backgroundTimeRemaining]

有没有办法获取backgroundTimeRemaining而不是每次都将回调添加回主线程?这似乎比它应该更痛苦......?

THX 麦克

1 个答案:

答案 0 :(得分:0)

UIApplication是UIKit的一部分。从UIKit的文档中可以看出:

  

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

所以这个调用需要在主线程上。