我有一个流行的iOS应用程序,但是我得到了一些崩溃报告,它们总是在同一行上。我无法一辈子重现该错误,但我怀疑它与我的不使用ARC的3rd-Party库有关,因此在不应该使用ARC的情况下会发布一些错误。

我尝试模拟内存警告,并尝试使用malloc随机获取内存,但我无法重现该错误。但是这种情况经常发生,很多人每天都会发电子邮件抱怨它。

我知道操作系统会执行一些“清理”操作,以释放需要自动释放的对象,但是有没有办法在模拟器中强制这样做呢?

最佳答案

一条消息正在发送到已释放对象。

某件事试图与已释放的DBRequest对话,或者DBRequest试图与已释放的对象对话。

最常见的原因是如果您执行以下操作:

[DBRequest setNetworkRequestDelegate:self];
DBRequest *myDBRequest = [DBRequest initWithURLRequest:request andInformTarget:self selector:@selector(doSomething)];

然后,您开始一些网络 Activity ,用户移至另一个视图,该视图取消分配self,网络 Activity 完成,并尝试通知self它已完成。

确保在将要通知的对象将被释放的情况下,有100%的情况下调用[myDBRequest cancel];dealloc方法通常是一个安全的地方。

10-07 14:33