J'essaie d'améliorer les performances de mon application, et je voudrais passer de NSMutableArray que j'utilise actuellement à un tableau C alloué dynamiquement.Comment allouer dynamiquement un tableau de pointeurs à des objets en Objective-C?
En tant que test, j'ai créé cette classe:
Dans mon interface de classe, je:
MyObject *myObjectArray;
Dans ma mise en œuvre, après que l'objet a été initialisé, j'ai une autre méthode pour mettre en place le tableau:
-(void) createObjectsWithNumberOfObjects:(int)numberOfObjects
{
MyObject *tempObject = nil;
myObjectArray = (MyObject*) malloc(numberOfObjects * sizeof(tempObject));
for(int i = 0; i < numberOfObjects; i++)
tempObject = [[MyObject alloc] init];
myObjectArray[i] = (MyObject*) tempObject; // error
}
}
Je reçois une erreur de: Types incompatibles Attribution
Alors qu'est-ce que je fais mal?
L'utilisation d'un tableau d'objets dynamiquement alloué comme celui-ci est-elle possible?
Aussi, Dans ma méthode dealloc, je l'ai configuré pour .L'appel sur chaque objet alors libre (myObjectArray)
@ Big Dogg, Si vous avez des problèmes de performances, je peux tout sauf garantir que NSMutableArray n'est pas la raison ... –
Aucun problème de performance (pour l'instant). Je suis curieux de connaître le gain de performance lié à l'utilisation d'un tableau C standard par rapport à NSMutableArray. Avec une centaine d'objets accessibles chaque image, je pense qu'il y aurait une sorte d'amélioration des performances. Cependant, vous avez raison de dire que si un décalage se produit, il sera probablement ailleurs. – codedeziner
Si vous êtes vraiment préoccupé par les performances, je vous suggère d'éviter une optimisation prématurée et de profiler votre code avec Instruments et Shark. Vous pourriez être surpris de ce qui est réellement le goulot d'étranglement dans votre application. –