2012-01-19 36 views
1

只是一個簡單的問題: 我有一個數組,將其命名爲sourceArray。這個數組有它的字典。 我有一個保留屬性,用於保存數組中的一個項目。 當我從數組中設置屬性它工作正常。 但是,當我將其設置爲其他項目並回到第一個項目時,由於第一個項目已發佈,我得到了bad_access異常。Objective-c屬性和內存管理

我的問題是爲什麼?在源數組中,項目被保留,當我設置它保留的屬性。當我再次設置時,setter釋放舊值,並保留新值。我猜...但顯然它不能以這種方式工作。

例子:

[self setProperty:[sourceArray objectAtIndex:0]]; 
[self setProperty:[sourceArray objectAtIndex:1]]; 
[self setProperty:[sourceArray objectAtIndex:0]]; ---> Exception 
+0

你有寫過自己的'setProperty'方法嗎?它是什麼樣子的? – Abizern

+0

是連續行中的這些代碼行嗎? – Shubhank

+0

不,我沒有寫我自己的設置方法。 – MetaImi

回答

0

我知道了。 在其他地方,我有一個行:

property = [sourceArray objectAtIndex:0]; 

它看起來像當我使用set方法,老的價值得到釋放,不管它沒有被保留下來(因爲在第一時間,我沒有使用set方法)。 我的錯......