在我的应用程序中,我有一系列长期运行的过程。有时,当应用程序进入后台时,这些进程之一将返回并尝试通知其他对象(已发布)它已完成,从而导致EXC_BAD_ACCESS。就像是:
[process runForALongTimeWithCompletion:^(){
[possiblyReleasedObject heyTheProcessFinished];
}];
如何检查
possiblyReleasedObject
是否已发布?或者,更确切地说,我如何检查它是否可解除引用,以便对其进行引用不会导致EXC_BAD_ACCESS错误? 最佳答案
无法(安全地)检查指向对象的指针是否指向Objective-C中的有效内存位置。您需要对程序进行结构设计,以使持有指向possiblyReleasedObject
指针的对象保留该程序,以免意外释放该程序。
当持有指向possiblyReleasedObject
的指针的对象不再需要它时,通常好的做法是在调用nil
之后将指针设置为release
,以避免意外地取消引用错误的指针。