iPhone开发 – 防止泄漏

当我使用Leaks运行我的应用程序并查看任何泄漏的扩展详细信息时,它会将我带到我的代码中的特定行,但我不知道该怎么做!

例如,Leaks在这条线上显示了一个malloc

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

但我不知道声明中的问题是什么! 有人可以告诉我如何解释这些问题,避免泄漏。

谢谢。

编辑:关于我之前的问题,NSZombieEnabled确保没有对象被释放,这增加了内存使用量。 因此,在使用Leaks进行测试时,请确保从您的应用中删除此设置。 认为这可能会帮助某人。

找到了答案。 弗雷德里克的回答让我思考。 我正在创建一个NSURLResponse和NSError的实例,然后我将其传递给sendSynchronousRequest方法。 根据iPhone的内存管理文档,不应该这样做。 我们只需要将NSURLResponse和NSError对象的引用传递给方法,该方法负责创建和释放对象。

希望能帮助别人。 非常感谢大家的答案。

“扩展详细信息”窗格将为您提供堆栈跟踪,显示泄漏处的堆栈。 一般来说,一个好的起点是查看你的方法和你的代码在堆栈中的最后一个方法,看看你在那里做的记忆是什么,听起来你可能会过度保留一个对象。 从现在开始

您是否在通话后释放响应和错误对象? 这些可能在电话中分配。

对于iPhone OS 2.2版本,上面提到的方法中的泄漏应该是固定的。 您使用的是哪个版本的iPhone OS?