2011-09-03 42 views
0

我有一個的UIViewController與屬性釋放與self.property屬性 - 在分析錯誤

@property (nonatomic, retain) NSMutableArray *speakerFetchResults; 

然後,我

self.speakerFetchResults = [[[self.speakerViewContext executeFetchRequest:request error:&error] mutableCopy] autorelease]; 

設置屬性在viewWillAppear中,並希望將它釋放再次在UIViewController的與

[self.speakerFetchResults release]; 

但是,dealloc方法,如果我分析我的文件,我得到的[ self.speakerFetchResults發佈];以下警告:

調用程序在此時不擁有的對象的引用計數遞減不正確。

而且(我testet出來)我得到這個消息對所有

[self.anything發行]

問題。

所以我有點困惑,並刪除所有「自我」。在這個版本中或通常會導致程序中出現很多錯誤。所以我認爲分析儀是錯誤的,但我只想問你一些幫助。

您認爲如何?

感謝您的幫助。

回答

2

你不應該call release on the object returned by the getter(吸氣劑有副作用,定製邏輯,返回自動釋放的對象等,所以你不能假設[self.speakerFetchResults release][speakerFetchResults release]具有相同的結果)。

你可以簡單地做:

self.speakerFetchResults = nil; // this releases the old value 

或者,在dealloc中,凡使用存取的氣餒:

[speakerFetchResults release]; 
+0

謝謝!現在它更清晰了! – andi1984

+0

@ andi1984歡迎您! – albertamg