2011-08-12 5 views
0

私は比較的目的のCに新しいです.2D NSMutableArrayに問題があります.1つのNSMutableArrayの内容を別のNSMutableArrayの内容に追加するときの動作です。NSMutableArraysのNSMutableArray、addObjectの問題

私はNSMutableArrayを含むシングルトンクラスを持っています。この配列は、NSURL値を格納するための配列です。 プログラムのある時点で、このNSMutableArrayを別のNSMutableArrayに全体として追加する必要があります。

私は次のようなことをします: [arrayIWantStuffIn addObject:mySingleton.singletonMutableArray];

問題は、NSLRL値の新しいセットの格納を開始するためにsingltonMutableArrayをリセットする必要があるということです。上記のaddObject関数は、値渡しではなく参照渡しのように見えるので、私は次のようにします。

[mySingleton.singletonMutableArray removeAllObjects];

arrayIWantStuffInに格納されたデータも消去されます。

NSMutableArrayを別のNSMutableArrayに参照ではなく値で追加する「深い」addObjectを実現するにはどうすればよいですか?

答えて

0

実際には別のmutableCopyだけで深いコピーは必要ありません。これはsingletonMutableArrayは、それがarrayIWantStuffInであなたの項目を変更しないと、あなたはまだ独立して内容を変更することができますクリアまたは変更されたときにそれが完了したら、次の

[arrayIWantStuffIn addObject: [[mySingleton.singletonMutableArray mutablCopy] autorelease]]; 

を行うことで簡単に行うことができます。

+0

これは魅力的なように機能しました。ありがとうジョー。これを正しく理解していることを確認してください。[mySingleton.singletonMutableArray mutableCopy]は、私のsingletonMutableArrayのディープコピーを作成し、そのコピーをaddObjectに渡されるオブジェクトとして使用しますか? –

+0

'singletonMutableArray'のディープコピーを作成しないので、mutableCopyはコピー時に同じ' NSURL'を指していますが、 'singletonMutableArray'を変更すると' arrayIWantStuffIn'は変更されませんおよびその逆。また、 'NSURL'は不変ですので、変更することについて心配する必要はありません。 – Joe

関連する問題