2012-02-25 4 views
4

数字だけを必要とする配列を変更できません。これをどのように初期化する必要がありますか?数字のNSArrayを初期化する

私はそれが今のところ好きですが、もっと良い方法があると思っています。 C++のようにすることはできますか?このような何かがアプリケーションに何らかの影響を与えるでしょうか?int list[5] = {1,2,3,4,5};

myArray = [[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil]; 

また、数字だけの配列の配列が必要な場合は、どのようになりますか?私は新しいことをobj-cとオンラインで見ている私は矛盾した答えを見た。

答えて

5

可変ではなく、数字のみを含む場合は、C配列を直接使用してください。 Objective-CでC配列を使うのは問題ありません。あなたの場合はNSArrayがオーバーヘッドになります。

+0

ありがとう、それは私がホッピングしていたものです。 2次元配列はどうですか?私たちもCの構文でそれを行うことができますか? –

+0

好きなだけ多くの次元:-) – CRD

-1

あなたがNSArrayのにカテゴリを追加することができます。

@implementation NSArray (ArrayWithInts) 

+(NSArray*)arrayWithInts:(const int[])ints count:(size_t)count 
{ 
    assert(count > 0 && count < 100) ; // just in case 

    NSNumber * numbers[ count ] ; 
    for(int index=0; index < count; ++index) 
    { 
     numbers[ index ] = [ NSNumber numberWithInt:ints[ index ]] ; 
    } 

    return [ NSArray arrayWithObjects:numbers count:count ] ; 
} 
@end 

countof()

は次のようになります。このような

#define countof(x) (sizeof(x)/sizeof(x[0])) 

用途:

const int numbers[] = { 20, 10, 5, 2, 1, 0 } ; 
NSArray * array = [ NSArray arrayWithInts:numbers count:countof(numbers) ]) ; 

それとも、ただCRDの提案@使用することができます上記...