2012-01-19 19 views
1

ちょっとした質問: 配列があり、名前はsourceArrayです。この配列には辞書があります。 配列から1つのアイテムを保持するために使用される保持されたプロパティがあります。 配列からプロパティを設定すると、正常に動作します。 しかし、最初のアイテムがリリースされて以来、私は他のアイテムでそれを設定し、最初のアイテムに戻すとbad_access例外が発生します。Objective-cプロパティとメモリ管理

私の質問はなぜですか?ソース配列ではアイテムは保持され、プロパティを設定すると保持されます。もう一度設定すると、設定者は古い値を解放し、新しい値を保持します。私は推測する...しかし、明らかにそれはこのように動作しません。

例:

[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メソッドを使用しませんでした)。 私の誤り...