我有一个NSURLConnectionDelegate对象来处理一些SOAP通信。本质上,我设置了几个属性值,然后调用一个方法来构建xml请求,然后将其发送到服务器。该对象也是一个NSXMLParserDelegate,因此它可以解析来自服务器的xml响应并适当地处理数据。
在使用该对象时,我首先设置了许多属性的值。之后的保留计数仍为1。然后我调用我的第一个方法,那就是有趣的开始。任何时候调用自定义方法或NSURLConnectionDelegate方法时,保留计数都会增加1。当调用NSXMLParserDelegate方法时,这不会发生。当所有的通信都完成了,我也处理完了对象,它的retain数到了43。释放对象并不会减少保留计数,因此我最终得到一个无法释放的对象。除此之外,该对象的工作与预期的一样。
有很多代码,我真的不确定什么是相关的,因为实际上看起来我在方法中所做的任何事情都不会导致retainCount递增。值得一提的是,我从后台线程调用这些方法,但在主线程上执行它们:
[tEditor performSelectorOnMainThread:@selector(requestQueueList) withObject:nil waitUntilDone:YES];发布于 2012-05-09 01:36:31
原来,我将一个合成属性命名为" release“,并且无意中覆盖了该对象的release方法。糟了!
https://stackoverflow.com/questions/10502289
复制相似问题