Iphone dealloc方法存在问题-';xmlEntity';不是Objective-C类名或别名

Iphone dealloc方法存在问题-';xmlEntity';不是Objective-C类名或别名,iphone,objective-c,xcode,macos,Iphone,Objective C,Xcode,Macos,我正在清理代码并测试bug,这时我遇到了这个构建错误:['xmlEntity'不是Objective-C类名或别名]。这是我的class.h文件的缩短版本 @interface PMXMLParser : NSXMLParser { NSMutableDictionary *xmlEntity; NSMutableDictionary *collectionDict; } @property (nonatomic, retain) NSMutabl

我正在清理代码并测试bug,这时我遇到了这个构建错误:['xmlEntity'不是Objective-C类名或别名]。这是我的class.h文件的缩短版本

@interface PMXMLParser : NSXMLParser {
           NSMutableDictionary *xmlEntity;
           NSMutableDictionary *collectionDict;
}
@property (nonatomic, retain)   NSMutableDictionary *xmlEntity;
@property (nonatomic, retain)   NSMutableDictionary *collectionDict;

@end
这是.m文件

@implementation PMXMLParser

@synthesize xmlEntity, collectionDict

- (void) dealloc
{
    // this builds correctly, with no issues.
    [collectionDict release];


    // 1. This works
    //self.xmlEntity = nil;

    // 2. This causes the build error: 'xmlEntity' is not an Objective-C class name or alias
    //[xmlEntity release];

    [super dealloc];
}
@end
现在对我来说,这些例子1和2做了同样的事情,只是对数字1做了更多的工作

有人知道我为什么在2号上出现这个构建错误吗

编辑:07/30/2010-这里提供的代码将正确编译,这只是我整个课程的缩短版本。但是我当前的类没有编译。当我取出私有代码时,我将发布整个课程


谢谢。

这真的是您的实现吗?您需要在“.m”源文件中有一个单独的@implementation部分,并且需要@synthesis这些属性,然后才能使用它们。此外,您的dealloc函数需要进入@implementation部分。但是,撇开这些问题不谈,如果您可以使用表达式
self.xmlEntity
而不是
xmlEntity
,这意味着存在一个范围问题(可能是因为您不在@implementation部分),可以通过以下方法解决:

[self.xmlEntity release];

也就是说,我会正确地解决上述问题。

我发现我正在开发的程序包括libxml2.dylib框架。它有一个名为xmlEntity的结构。导致我出现问题的是xmlEntity项的语法颜色,它是浅紫色。

添加必要的周边花絮对我来说很好。您能否发布一个简短的、可编译的示例来实际再现问题?将方法定义放在
@implementation
部分之外时,您已经遇到编译错误。[self.xmlEntity release]进行编译。我的困惑是我为什么必须这样做。一旦解决了这个问题,我会考虑解决这个问题。