2012-06-28 3 views
1

Je ne connais pas C. Comment passer un tableau C à une fonction Objective-C?Comment passer un tableau C à une fonction objectif-C?

J'ai en fait besoin d'un exemple d'une fonction de classe convertissant NSArray en C arrays. C'est ce que j'ai jusqu'à présent:

+ (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; 
} 
+0

Jetez un oeil à l'adresse http : //stackoverflow.com/questions/8086634/creating-a-nsarray-from-ac-array et http://stackoverflow.com/questions/5150312/using-c-arrays-in-objective-c –

Répondre

2

Il y a quelques façons.

Si votre taille de tableau est fixé à la compilation, vous pouvez utiliser le modificateur C99 static:

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

} 

Sinon, vous devez passer comme deux arguments distincts. Un comme un pointeur vers le premier élément de celui-ci, et la seconde que la longueur de celui-ci:

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

} 

Maintenant, vous pouvez accéder à vos variables comme tout autre tableau que vous pourriez avoir.

Parce que vous avez affaire à un C-tableau d'objets-c objectif, vous pouvez réellement utiliser NSArray « s construit dans le constructeur pour transformer un C-tableau dans un NSArray:

NSArray *result = [NSArray arrayWithObjects:arg count:count]; 
+0

Comment puis-je calculer la taille du tableau? Je ne sais pas la valeur à passer au paramètre de comptage ... – aneuryzm

+0

@Patrick vous passeriez le nombre d'éléments dans le tableau. –

+0

Mais cette méthode est utilisée pour les tableaux de taille différente. Comment puis-je obtenir la longueur du tableau en C? – aneuryzm

Questions connexes