在我的应用程序中,我有一系列长时间运行的进程。有时,当应用程序进入后台时,这些进程之一将返回并尝试通知其他对象(已释放)它已完成,从而导致 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/