1

私はこれを見てきましが、それよりも簡単な方法が必要です。

NSNumbers の配列があり、そのうちの 1 つをインクリメントしたい場合、これを行う必要がありますか?

[myMutableArray replaceObjectAtIndex:index withObject:[NSNumber numberWithInt:[(NSNumber *)[myMutableArray objectAtIndex:index] intValue] + 1]];

また

myArray = [myArray.mutableCopy replaceObjectAtIndex:index withObject:[NSNumber numberWithInt:[(NSNumber *)[myArray objectAtIndex:index] intValue] + 1]].copy;

何らかの理由で不変配列を使用することにした場合。

いつでも int 配列を使用できることはわかっていますが、これを行う簡単な方法があるかどうかに興味がありました。

また、グローバルにせずに実装内または完全なファイル (.m 全体) 内で int 配列にアクセスする必要がある場合、どのように int 配列を定義する必要がありますか?

これを私の実装/ファイルの一番上に投げるのと同じくらい簡単でしょうか?

static int *myInt;
4

2 に答える 2

3

他の人が言ったように、はい、あなたはその多くのステップが必要です。リテラルを使用すると、少し読みやすくなります。

myMutableArray[index] = @( [ myMutableArray[index] intValue] + 1 ) ;

2番目のコード例は、それが作用したNSMutableArrayではなく、をreplaceObjectAtIndex:withObject:返すため、機能しません。NSArrayvoidを作成してから、NSArrayをNSMutableArrayに設定する必要があります。mutableCopyreplaceObjectcopy

于 2012-12-28T23:02:40.590 に答える
0

サイズを変更できるようにする必要がある場合は、プレーンな int 配列を作成するのではなく、C++ STL コンテナーを使用することをお勧めします。実装ファイルの拡張子を.mmではなく に変更し.mます。

std::vector<int> numbers = { 2, 4, 6 };
numbers[1]++; // { 2, 5, 6 }

コンテナーの定義を含めることを忘れないでください。

#import <vector>
于 2012-12-29T05:29:59.570 に答える