假设我有 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/