0

私は方法を持っています:

-(void)ModifyArray:(NSMutableArray)orginalArray
{
 NSMutableArray* copy = [[NSMutableArray alloc]init];
 copy = [orginalArray copy];
 Field* field = [copy objectAtIndex:0];
 [copy replaceObjectAtIndex:0 withObject:field];
}

最後の行でエラーが発生し、コピー配列を変更できません。

コピーの代わりにmutableCopyを使用すると、コピー配列を変更できますが、元の配列も変更されます:/元の配列への参照なしでコピーを作成し、薄い新しい配列のみを変更したいだけです。

4

1 に答える 1

3

ここにはいくつかの問題があります。

番号 1 )

次の最初の行を削除します。

NSMutableArray* copy = [[NSMutableArray alloc]init];

[originalArray copy];その 2 番目の "行によって役に立たなくなります。

代わりにこれを使用してください:

NSMutableArray * copy = [originalArray mutableCopy];

またはさらに良い:

NSMutableArray * myOriginalArrayCopy = [originalArray mutableCopy]; 

(この回答の最後のポイントを参照してください)

2番)

宣言にはポインタが必要です:

-(void)modifyArray:(NSMutableArray *)orginalArray

(「ModifyArray」の最初の文字も小文字に変更したことに注意してください。Objective-C でのベスト プラクティスは、メソッド名を小文字で開始することです)

番号 3)

変数の名前として「コピー」を使用しないでください。見栄えが悪いです (おそらく言語のキーワードでもあります)。

modifyArray「 」関数の最後にある「コピー」可変配列で何かをしていますか?

于 2013-06-10T08:06:31.793 に答える