Je ne connais pas bien C. Comment puis-je passer un tableau C à une fonction Objective-C?
J’ai en fait besoin d’un exemple de fonction de classe convertissant NSArray en tableaux C. C’est ce que j’ai jusqu’à présent:
+ (NSArray *)convertArray:(NSSsortingng*)array { //I don't think this is correct: the argument is just a NSSsortingng 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; }
Il y a plusieurs façons.
Si la taille de votre tableau est fixée au moment de la compilation, vous pouvez utiliser le modificateur static
C99:
-(void) doSomething:(NSSsortingng *[static 10]) arg { }
Sinon, vous devez le transmettre en deux arguments distincts. L’un en tant que pointeur sur le premier élément et le second en tant que longueur:
-(void) doSomething:(NSSsortingng **) arg count:(size_t) count { }
Vous pouvez maintenant accéder à vos variables comme à tout autre tableau que vous pourriez avoir.
Comme vous traitez avec un tableau C d’objectives objective-c, vous pouvez utiliser le constructeur intégré de NSArray
pour transformer un tableau C en un tableau NSArray
:
NSArray *result = [NSArray arrayWithObjects:arg count:count];