【发布时间】:2012-05-17 03:41:22
【问题描述】:
我有一个 NSURLConnectionDelegate 对象来处理一些 SOAP 通信。本质上,我设置了一些属性值,然后调用一个构建 xml 请求的方法,然后将其发送到服务器。该对象也是一个 NSXMLParserDelegate,因此它可以解析来自服务器的 xml 响应并适当地处理数据。
在使用对象时,我首先设置了许多属性的值。之后的保留计数仍然是一。然后我调用我的第一个方法,这就是乐趣开始的时候。任何时候调用自定义方法或 NSURLConnectionDelegate 方法时,保留计数都会增加 1。调用 NSXMLParserDelegate 方法时不会发生这种情况。在所有通信完成并且我完成了对象的保留计数后,它的保留计数为 43。释放对象不会减少保留计数,所以我最终得到了一个我无法释放的对象。除此之外,该对象按预期工作。
有很多代码,我不确定什么是相关的,因为实际上我在方法中所做的任何事情似乎都不会导致 retainCount 增加。唯一值得一提的是,我从后台线程调用这些方法,但在主线程上执行它们:
[tEditor performSelectorOnMainThread:@selector(requestQueueList) withObject:nil waitUntilDone:YES];
【问题讨论】:
-
您是否会覆盖您的
NSURLConnectionDelegaterelease?我的意思是performSelectorOnMainThread必须自动保留对象和参数,直到选择器完成,但它们也应该自动释放。如果您的发布方法为空,则保留计数只会增加。 -
哈哈,天哪,我觉得自己像个白痴。我有一个参数,一个 NSString,名为“release”。我改变了一切正常。非常感谢,当我忽略这样简单的事情时,我讨厌。
-
酷,我认为您应该将其发布为答案并接受以供将来参考。
标签: objective-c cocoa memory-management nsurlconnection