2012-03-05 5 views
4

私はNSMutabelArrayを持っていて、その中のいくつかのオブジェクトは私のView-Controllerのプロパティとして持っています。 このVCをプッシュすると、この配列が渡されます。Objective-Cプロパティのコピー属性は、ディープコピーまたはシャローコピーを作成しますか?

私は最初にそれを割り当てました。

しかし、私は以前のVCのものに影響を与えることなく、デバイスがVCを回転するたびに変更する必要がありました。 コピープロパティを作成しました。

今、アレイのオブジェクトを個別に変更していました。

しかし、なんとか私の前のVCの配列も変わっていました。

変更されたオブジェクトで新しいNSMutabelArrayを作成しなければならず、自分のプロパティに設定する必要がありました。

コピー属性は、配列に追加されたオブジェクトの同じ参照を持つ別の配列を作成するだけですか?

答えて

10

copy属性は、渡されたオブジェクトにcopyメッセージを送信した後に返されるオブジェクトにプロパティが割り当てられることを意味します。これは、コピーを取得するオブジェクトによって深いか浅いかどうかに依存します。 Foundationコレクションは、不変なコレクションに対してcopyretainとして実装できるため、浅いコピーを作成します。

3

コピー属性は、配列に追加されたオブジェクトの同じ参照を持つ別の配列を作成するだけですか?

はい、そうです。

this answerにアレイをディープコピーするための提案があります。多分それらのうちの1つがあなたのために働くでしょうか?

関連する問題