2010-07-29 34 views
1

我正在清理我的代碼並測試錯誤,當我遇到此構建錯誤時:['xmlEntity'不是Objective-C類名稱或別名]。這是我的.h文件的縮寫版本。dealloc方法問題 - 'xmlEntity'不是Objective-C類名或別名

@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 ?

編輯:2010年7月30日 - 這裏介紹的代碼將正確編譯,這只是我整個班級的縮短版本。但是我現在的課不編譯。以後我會拿出私人密碼發佈全班。

謝謝。

+0

當我添加必要的周邊花絮時,適合我。你可以發佈一個簡短的,可編輯的樣本,真正再現問題? – 2010-07-29 23:51:20

回答

1

我發現我正在處理的程序包含框架libxml2.dylib。其中有一個名爲xmlEntity的結構。導致問題的原因是項目xmlEntity的語法顏色,它是淡紫色。

1

這真的是你的實現嗎?您需要在「.m」源文件中有一個單獨的@implementation部分,並且您需要@synthesize這些屬性才能使用它們。另外,你的dealloc函數需要進入@implementation部分。但是,拋開這些問題,如果你可以使用表達式self.xmlEntity但不xmlEntity這意味着有一個範圍的問題(可能是因爲你不是在@implementation部分),它可以通過使用固定:

[self.xmlEntity release]; 

這就是說,我會妥善處理上述問題。

+0

將方法定義放在'@ implementation'部分之外時,您已經收到編譯錯誤。 – 2010-07-30 00:10:07

+0

[self.xmlEntity發行]編譯。我的困惑是爲什麼我必須這樣做。一旦可以解決,我會考慮解決這個問題。 – NixonsBack 2010-07-30 16:15:06