1

C に詳しくありません。C 配列を Objective-C 関数に渡すにはどうすればよいですか?

NSArray を C 配列に変換するクラス関数の例が実際に必要です。これは私がこれまでに持っているものです:

+ (NSArray *)convertArray:(NSString*)array { //I don't think this is correct: the argument is just a NSString parameter and not an array

    NSMutableArray * targetArray = [NSMutableArray array];

    for (i = 0; i < SIZE; i++) //SIZE: I dunno how to get the size of a C array.
    {
        [targetArray addObject: [NSString stringWithString:array[i]];
    }
    return targetArray;
}
4

1 に答える 1

2

いくつかの方法があります。

配列のサイズがコンパイル時に固定されている場合は、C99static修飾子を使用できます。

-(void) doSomething:(NSString *[static 10]) arg
{

}

そうでない場合は、2 つの個別の引数として渡す必要があります。1 つはその最初の要素へのポインターとして、2 番目はその長さとして:

-(void) doSomething:(NSString **) arg count:(size_t) count
{

}

これで、他の配列と同じように変数にアクセスできます。

Objective-C オブジェクトの C 配列を扱っているため、NSArrayC 配列を に変換するために の組み込みコンストラクターを実際に使用できNSArrayます。

NSArray *result = [NSArray arrayWithObjects:arg count:count];
于 2012-06-28T14:58:55.557 に答える