0

こんにちは私は私がコピーしようとしている配列を持っていて、それから要素を削除します。問題は、コピーから要素を削除していると思いますが、元の配列からも要素を削除していることです。何が起こっているのかわかりません。Objective cは初めてなので、助けていただければ幸いです。

NSArray *newarray = appDelegate.orginalArray;

[newarray removeObjectAtIndex: 2];

オブジェクトを削除した後に配列を見ると、newarrayとorginalArrayの両方から削除されていたのはなぜですか?

どうもありがとう

4

2 に答える 2

2

これはコピーを作成していません。両方とも同じオブジェクトnewArrayを参照します。appDelegate.originalArrayこれを行う必要があります:

NSMutableArray *newArray = [appDelegate.originalArray mutableCopy];

NSMutableArrayまた、コピーが変更可能であることを確認するために使用していることにも注意してくださいmutableCopy(つまり、アイテムの追加と削除をサポートしています)

于 2012-05-10T18:07:33.780 に答える
0

ポインター、バディ、および可変/不変の抽象化。newarrayappDelegate.originalArrayは両方とも同じ不変(変更不可)配列へのポインター(参照)です。あなたが欲しい:

NSArray *newarray = [appDelegate.orginalArray mutableCopy];
于 2012-05-10T18:08:51.393 に答える