iOS:如果我执行后台作业然后离开视图控制器会发生什么?

Van*_*ran 5 iphone objective-c nsoperation grand-central-dispatch ios

假设我有视图控制器A和视图控制器B.

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

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

我有点困惑,任何人都可以把我搞清楚?:)

谢谢,

gsc*_*ler 4

你是对的,该操作不会仅仅因为生成它的对象就神奇地消失。

当操作系统尝试访问现在已释放的视图控制器对象时,您将导致操作系统抛出异常。这就是进行后台线程操作的危险。

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

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