2012-01-19 110 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方法)。 我的错......