我正在学习很多关于内存管理的知识,但这个问题让我感到疑惑。
在类方法中我创建了一个变量:
TBXMLElement *pieceXML = [TBXML childElementNamed:@"piece"
parentElement:rootElement];
并在方法结束时释放它:
[pieceXML release];
但我得到错误:无效的接收者类型'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
不是一个 Objective-C 类——而是一个 C struct
。
这意味着 pieceXML
不是 Objective-C 对象,因此您不能向它发送任何 Objective-C 消息。特别是,您不能发送 -release
。
关于iphone - 释放变量时接收者类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987298/