-4

私は持っていNSMutableArrayます。 試したforループを使っNSArrayて作りたいのですができません。NSMutableArrayNSMutableArray

4

2 に答える 2

7

配列アイテムをループするのではなく、copyメソッドを使用して可変配列を不変配列に変換できます。

NSArray *newArray = [myMutableArray copy];

copy便利な方法です。可変/不変クラスクラスターの可変メンバーに送信すると、不変のコピーが返されます。ただし、不変のメンバーに送信すると、同じオブジェクトが別の保持で返されます。

mutableCopy送信先の変更可能なバージョンを返すものもあります。

new alloc retain所有されている(保持されている)オブジェクトを返す動作は、メモリ管理ガイドラインが、またはcopy(もちろん、非ARC環境で)作成されたオブジェクトを解放することを推奨する理由です。

新しい配列を作成する前に配列の値を変更したいため、ループを使用しようとしている理由がある場合、これを行うにはいくつかの方法(ループ、列挙など)がありますが、アドバイスする前に、詳細を知る必要があります。

于 2012-08-26T10:12:08.627 に答える
5

ループする必要はありません。このような可変配列から不変配列を作成できます

NSArray *myUnMutableArray = [[NSArray alloc] initWithArray:myMutableArray];
于 2012-08-26T10:07:47.943 に答える