ios - 在后台线程上查找backgroundTimeRemaining

标签 ios objective-c multithreading

我的iOS应用程序具有一些在后台线程上运行的数据处理。数据处理可能需要一些时间才能完成,因此我会定期检查backgroundTimeRemaining,以查看是否需要整理和停止数据处理,然后再终止该应用程序。

为此,我调用:

[[UIApplication sharedApplication] backgroundTimeRemaining]

使用最新的XCode现在会导致运行时错误:
Main Thread Checker: UI API called on a background thread: -[UIApplication backgroundTimeRemaining]

有没有什么方法可以在不每次都将调用添加回主线程的情况下获取backgroundTimeRemaining?这似乎比应该的要痛苦得多……?

谢谢
麦克风

最佳答案

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

Important Use UIKit classes only from your app’s main thread or main dispatch queue, unless otherwise indicated. This restriction particularly applies to classes derived from UIResponder or that involve manipulating your app’s user interface in any way.



因此,此调用需要在主线程上。

关于ios - 在后台线程上查找backgroundTimeRemaining,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46701006/

相关文章:

objective-c - iOS 5.1 在后台停止应用程序

objective-c - 使用 UIControl(特别是 UIButton)时如何对目标进行排序?

ios - Swift 4 UIActivityIndi​​catorView 不以 UITableView 为中心

objective-c - NSString floatValue 失去准确性?

iphone - 为 UIResponder 添加两个监听器

python - wx.TextCtrl(或底层 GTK+)的多线程问题

android - 我能知道哪个线程调用了我的服务方法吗?

ios - 将 CLLocation 对象转换为 MKMapPoint 结构

objective-c - 有没有办法在不使用 UINavigationController 的情况下更改 iOS 中的 View ?

android - 从 native 代码检测 Android 上的 CPU 内核数