iphone - 释放变量时接收者类型无效

标签 iphone ios ios4 memory-management

我正在学习很多关于内存管理的知识,但这个问题让我感到疑惑。

在类方法中我创建了一个变量:

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/

相关文章:

iphone - 如何禁用“向下拖动以查看通知”功能?

iphone - persistentstorecoordinator sqlite 错误代码 :522 'not an error'

iphone - 在 iOS SDK 4.2+ 上应用程序处于后台时禁用录音通知

iphone - 什么时候应该以编程方式创建 View Controller ,什么时候应该使用 NIB 文件?

iphone - 如何将应用程序的铃声添加到 iPhone 的铃声中?

iphone - CFReadStreamHasBytesAvailable 轮询 - 最佳实践

ios - 为什么 XCode 4 编译了 ~ 3000 个 XIB 而我只有 ~ 200 个?

ios - ipa 应用程序无法添加到我们的 itunes 库,它不是一个有效的应用程序

ios - 如何构建一个动态的 UIPageViewController

iphone - 用 quartz 绘制航向角 View