【发布时间】:2011-05-13 04:41:04
【问题描述】:
我正在学习很多关于内存管理的知识,但这个问题让我很疑惑。
在类方法中我创建了一个变量:
TBXMLElement *pieceXML = [TBXML childElementNamed:@"piece"
parentElement:rootElement];
并在方法结束时释放它:
[pieceXML release];
但我得到了错误:Invalid receiver type 'TBXMLElement *'
childElementNamed:parentElement:的实现如下
+ (TBXMLElement*) childElementNamed:(NSString*)aName parentElement:(TBXMLElement*)aParentXMLElement{
TBXMLElement * xmlElement = aParentXMLElement->firstChild;
const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding];
while (xmlElement) {
if (strlen(xmlElement->name) == strlen(name) && memcmp(xmlElement->name,name,strlen(name)) == 0) {
return xmlElement;
}
xmlElement = xmlElement->nextSibling;
}
return nil;
}
我正在尝试了解如何预测这种情况会再次发生,欢迎阅读任何参考资料,因为即使看过之后我也不知道如何找到原因。
谢谢。
【问题讨论】:
-
TBXMLElement 是声明释放方法的 NSObject 的后代吗?
-
根据 Bavarious 的说法,它似乎是一个 C
struct。 -
如here所述。
标签: iphone ios ios4 memory-management