iphone - 如何处理 ViewController 被释放,在触发后台线程后,指的是现在释放的 ViewController?

标签 iphone objective-c ios uiviewcontroller sigabrt

我有一个 ViewController 被推送到 NavigationController 堆栈上。一旦它被插入堆栈,它就开始通过下载器对象下载一些图像,该对象负责在后台线程中下载图像。即使通过 WiFi 下载图像也可能需要几秒钟的时间。当图像下载完成后,下载器对象指示 ViewController 布局其图像,将新下载的图像放在分页 UIScrollView 的后面。然而,在此期间,用户可能按下了返回按钮,而 ViewController 现在可能已被释放/解除分配,因此下载器对象将导致 SIGABRT 错误消息并且应用程序将崩溃。

我应该如何处理这种情况?有什么方法可以检查释放/解除分配的实例吗?或者某种方式来捕获错误并记录,然后忽略,它?

最佳答案

您最好的选择是使用归零弱引用。当然,对于 iOS 5.0,这只是一个“弱”的引用。但是,如果您的目标是低于 iOS 5.0,那么您需要一个自定义解决方案。 Mike Ash 在 this 中有一个很好的描述。文章。

关于iphone - 如何处理 ViewController 被释放,在触发后台线程后,指的是现在释放的 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648175/

相关文章:

ios - UIView 动画将 View 重置为原始矩形

ios - Swift 通用函数来推送任何 View Controller

ios - ZXing QR 阅读器许可问题

ios - 将 UITabBar 放置在 UITabBarController 中的屏幕顶部

iphone - 像 Facebook 一样的图片库和动画

iPhone 和顶点缓冲区对象

iPhone 5 视网膜显示屏 2x 图像

ios - 存折集成 iOS(动态)

ios - 如何将图像裁剪成圆角

ios - 如何正确获取 didOutputSampleBuffer 的视频输出?