2012-03-12 44 views
0

大家好,我通過IDE中的分析器工具運行我的代碼,其中我在dealloc中得到一個指示,並說「未在這一點上呼叫方所擁有的對象的引用計數」我創建一個NSArray和釋放正常我的代碼樣品低於對象的引用計數的錯誤遞減是由調用者在這一點上不擁有的

myClass.h

{               
NSArray *arrayOfChapters; 

} 
@property (nonatomic, retain) NSArray *arrayOfChapters; 

@end 

myClass.m:

-(void)parseAndLoadChaptersAndPages{ 
self.arrayOfChapters = chapterLoader.arrayOfChapters; 
} 
-(void)dealloc{ 
    [self.arrayOfChapters release]; 
    [super dealloc]; 
} 

任何人都可以告訴我爲什麼它給了我警告的問題。提前感謝。

+0

你沒有在'dealloc'中調用'[super dealloc]'。也可以嘗試'[arrayOfChapters release]'而不是'[self.arrayOfChapters release]'。 – 2012-03-12 08:42:06

+3

由於您使用屬性,您應該讓setter釋放對象。做self.arrayOfChapters =零代替。 – tarmes 2012-03-12 08:54:12

回答

0

您可以直接釋放伊娃([arrayOfChapters release]),或者您可以將屬性設置爲零(self.arrayOfChapters = nil),並且setter方法將爲您釋放伊娃。

對象擁有ivar arrayOfChapters,但不一定是使用屬性語法調用的arrayOfChapters方法的返回值。這有點令人困惑,因爲伊娃和方法的名字完全一樣。在這種情況下,arrayOfChapters方法返回伊娃,所以這不是問題。然而,分析器認爲該方法在理論上可能會返回一個不同的對象,在這種情況下,您會過度釋放該對象。

相關問題