我有一个流行的iOS应用程序,但我收到了一些总是在同一行的崩溃报告。我不能为我的生活重现这个bug,但我怀疑它与我不使用ARC的第三方库有关,因此当它不应该被释放时会发布。
我已经尝试过模拟内存警告,我尝试使用malloc随机获取内存,我无法重现该错误。但是,对于许多人来说,每天发送电子邮件并抱怨它的情况经常发生。
我知道操作系统做了一些“清理”,它会释放需要自动释放的对象,但有没有办法在模拟器中强制执行此操作?
答案 0 :(得分:1)
正在向已解除分配的对象发送消息。
要么某些东西试图与解除分配的DBRequest交谈,要么DBRequest试图与解除分配的对象交谈。
最常见的原因是你做了类似的事情:
[DBRequest setNetworkRequestDelegate:self];
DBRequest *myDBRequest = [DBRequest initWithURLRequest:request andInformTarget:self selector:@selector(doSomething)];
然后您开始一些网络活动,用户移动到另一个视图,该视图解除分配self
,网络活动结束,并尝试通知self
它已完成。
确保在100%将要解除通知对象的情况下调用[myDBRequest cancel];
。 dealloc
方法通常是一个安全的地方。