iphone - iOS:如果我执行后台作业然后离开 View Controller 会怎样?

标签 iphone objective-c ios grand-central-dispatch nsoperation

假设我有 View Controller A 和 View Controller B。

在 VC A 中,我推送 VC B。然后在 VC B 中,我使用 NSOperation 执行一些后台任务。在后台任务中,我修改了 VC B 的变量。

如果后台任务未完成并且我退出 VC B,会发生什么情况?这些操作会被取消还是会继续执行?调试时,它们似乎仍在执行。在那种情况下,他们不会访问已经释放的变量(因为我退出了 VC B)。

我对此有点困惑,谁能帮我解惑? :)

谢谢,

最佳答案

你是对的,这个操作不会仅仅因为产生它的对象就神奇地消失了。

您将导致操作系统在尝试访问现已解除分配的 View Controller 对象时抛出异常。这是进行后台线程操作的危险。

您需要相应地计划,在这种情况下,能够在 VC B 被释放时取消您的操作。这意味着子类化 NSOperation,实现 main() 并检查 isCancelled。

请参阅 Apple 关于 NSOperation、NSOperationQueues 和并发编程的文档。

关于iphone - iOS:如果我执行后台作业然后离开 View Controller 会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302095/

相关文章:

iphone - Apple Mach-O 链接器错误 (APActivityIcon)

ios - 如何从主视图中的特定位置淡入 UIVIew

java - 如何在构建期间修改 Java/Swift 源代码

iphone - UISearchDisplayController,对 UITableView 的引用是什么?

iphone - 将实用程序应用程序(2 个 View Controller )转换为选项卡栏应用程序

iphone - 访问 View 时,使用标签比使用变量更快?

objective-c - 单元测试中的 Xcode 内存泄漏检测

ios - 在非弹跳的 UITableView 中滚动后,行选择在第一次点击时不起作用

ios - 无法在 iOS 上获取 Facebook publish_action 权限

ios - iOS 闹钟