ios - 在长时间运行的进程后台期间防止 EXC_BAD_ACCESS

标签 ios objective-c iphone

在我的应用程序中,我有一系列长时间运行的进程。有时,当应用程序进入后台时,这些进程之一将返回并尝试通知其他对象(已释放)它已完成,从而导致 EXC_BAD_ACCESS。像这样的东西:

[process runForALongTimeWithCompletion:^(){
  [possiblyReleasedObject heyTheProcessFinished];
}];

如何检查possibleReleasedObject是否已被释放?或者,更准确地说,就我而言,如何检查它是否可以取消引用,以便引用它不会导致 EXC_BAD_ACCESS 错误?

最佳答案

没有办法(安全地)检查指向对象的指针是否指向 Objective-C 中的有效内存位置。您需要构建您的程序,使持有指向 possiblyReleasedObject 的指针的对象保留它,这样它就不会被无意中释放。

当持有指向 possiblyReleasedObject 指针的对象不再需要它时,通常好的做法是在调用 release 后将指针设置为 nil以避免意外取消引用错误的指针。

关于ios - 在长时间运行的进程后台期间防止 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52789733/

相关文章:

ios - NSURLSessionDataTask 在 iOS 后台的同一个 NSURLSession 中的 NSURLSessionDownloadTask 之后没有被调用

ios - 有没有办法在iOS中生成Int64类型的UUID?

objective-c - 使用图像创建模型类

objective-c - NSData 到 CRC-16?

java - JSONObject Java 相当于 Objective C

iphone - 以编程方式修改 UIToolBar 项目

ios - arc4random 函数随机执行两次或三次

javascript - 你能阻止 iPhone 使用 native 选择菜单吗?

iphone - 如何检查数组中数字的重复?

iphone - 如何从越狱的 iOS 设备上的 bundle id 快速获取应用程序的目录?