2011-11-08 59 views
0

我有一個非常簡單的類稱爲配置文件。它包含名爲avatar的NSMutableArray,其中包含UIImages。這個NSMutableArray被聲明爲非原子,保留屬性。它被分配在Profile的初始化方法中,如下所示:無法釋放對象

avatar = [[NSMutableArray alloc] initWithObjects: 
       [UIImage imageNamed:@"image1.png"], 
       [UIImage imageNamed:@"image2.png"], 
       [UIImage imageNamed:@"image3.png"], 
       [UIImage imageNamed:@"image4.png"], 
       [UIImage imageNamed:@"image5.png"],nil] ; 

並在Profile的dealloc方法中發佈。

在我的AppDelegate我有全局配置文件對象稱爲currentProfile.It用於各種文件。而且一旦我需要釋放這個對象的化身數組以便將它複製到另一個數組中。但複製從來沒有完成,因爲我釋放數組時發生運行時錯誤。當我對代碼進行分析,我得到如下:

屬性返回objective-с對象與+ 0保留計數(非擁有參考)

未擁有的對象的引用計數的減量不正確此時由來電者

有什麼不對?爲什麼我不能釋放數組?僅僅因爲它是一個班級的成員?如果是這樣,我怎樣才能用新的數組替換內容?

回答

1

呃..如果你不能釋放它,你總是可以將它設置爲零,這樣它就會丟棄整個內容,然後你可以重新分配新的數據加載數組。 另一種解決方案是在Profile類中創建一個使數組的= nil +版本爲 的方法,以便可以由使用該類對象的其他類直接調用該方法。

+0

看起來像你的另一個解決方案的作品。非常感謝你 –