web-dev-qa-db-ja.com

Objective-Cで配列に値を追加する方法

私はこれをやっています:

for(int i=0;i>count;i++)
{
    NSArray *temp=[[NSArray alloc]initWIthObjects]i,nil];
    NSLog(@"%i",temp);
}

それは私に0、1、2、3 ....を1つずつカウントしますが、これらの値{0,1,2,3,4,5 ...}を追加した配列が必要です。これは大したことではありませんが、見つけることができません。私はiPhoneが初めてです。

28
user440485
NSMutableArray *myArray = [NSMutableArray array];

for(int i = 0; i < 10; i++) {
   [myArray addObject:@(i)];
}

NSLog(@"myArray:\n%@", myArray);
65
vodkhang

このコードは、いくつかの理由により、望んでいることを実行していません。

  1. NSArrayは「可変」クラスではありません。つまり、作成後に変更するようには設計されていません。可変バージョンはNSMutableArrayです。これにより、値を追加できます。

  2. intなどのプリミティブをNSArrayまたはNSMutableArrayクラスに追加することはできません。オブジェクトのみを保持します。 NSNumberクラスは、このような状況向けに設計されています。

  3. 配列を割り当てるたびにメモリをリークしています。常にallocへの呼び出しと、対応するreleaseまたはautoreleaseへの呼び出しをペアにします。

必要なコードは次のようなものです。

NSMutableArray* array = [[NSMutableArray alloc] init];
for (int i = 0; i < count; i++)
{
    NSNumber* number = [NSNumber numberWithInt:i]; // <-- autoreleased, so you don't need to release it yourself
    [array addObject:number];
    NSLog(@"%i", i);
}
...
[array release]; // Don't forget to release the object after you're done with it

あなたへの私のアドバイスは Cocoa Fundamentals Guide を読んでいくつかの基本を理解することです。

12
Shaggy Frog

より短い方法は次のとおりです。

NSMutableArray *myArray = [NSMutableArray array];

for(int i = 0; i < 10; i++) {

   [myArray addObject:@(i)];
}

NSLog(@"myArray:\n%@", myArray);
1
JackyW