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