【问题标题】:NSURLConnectionDelegate retainCount is out of controlNSURLConnectionDelegate retainCount 失控
【发布时间】:2012-05-17 03:41:22
【问题描述】:

我有一个 NSURLConnectionDelegate 对象来处理一些 SOAP 通信。本质上,我设置了一些属性值,然后调用一个构建 xml 请求的方法,然后将其发送到服务器。该对象也是一个 NSXMLParserDelegate,因此它可以解析来自服务器的 xml 响应并适当地处理数据。

在使用对象时,我首先设置了许多属性的值。之后的保留计数仍然是一。然后我调用我的第一个方法,这就是乐趣开始的时候。任何时候调用自定义方法或 NSURLConnectionDelegate 方法时,保留计数都会增加 1。调用 NSXMLParserDelegate 方法时不会发生这种情况。在所有通信完成并且我完成了对象的保留计数后,它的保留计数为 43。释放对象不会减少保留计数,所以我最终得到了一个我无法释放的对象。除此之外,该对象按预期工作。

有很多代码,我不确定什么是相关的,因为实际上我在方法中所做的任何事情似乎都不会导致 retainCount 增加。唯一值得一提的是,我从后台线程调用这些方法,但在主线程上执行它们:

[tEditor performSelectorOnMainThread:@selector(requestQueueList) withObject:nil waitUntilDone:YES];

【问题讨论】:

  • 您是否会覆盖您的 NSURLConnectionDelegate release ?我的意思是performSelectorOnMainThread 必须自动保留对象和参数,直到选择器完成,但它们也应该自动释放。如果您的发布方法为空,则保留计数只会增加。
  • 哈哈,天哪,我觉得自己像个白痴。我有一个参数,一个 NSString,名为“release”。我改变了一切正常。非常感谢,当我忽略这样简单的事情时,我讨厌。
  • 酷,我认为您应该将其发布为答案并接受以供将来参考。

标签: objective-c cocoa memory-management nsurlconnection


【解决方案1】:

原来我将一个合成属性命名为“release”,并且无意中覆盖了对象的 release 方法。糟糕!

【讨论】:

  • 天哪,我不敢相信编译器至少没有发出警告!
猜你喜欢
  • 2017-10-29
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 2011-07-06
相关资源
最近更新 更多