Je suis un débutant iPhone/Objective-C avec un fond Java étendu.NSMutableArray arrayWithCapacity vs initWithCapacity
J'apprends plus sur la gestion de la mémoire en c objective et je lis la documentation d'Apple sur la gestion de la mémoire: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
Dans la section Politique de propriété de l'objet, il est dit que vous possédez un objet que vous créez via un méthode qui commence par alloc, new ou contient copy. La propriété implique que vous devez explicitement release
l'objet lorsque vous avez terminé avec elle.
Je suis à la recherche à la documentation NSMutableArray: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html
Il existe deux méthodes qui font à peu près la même chose ... ils ont tous deux créer un tableau avec une capacité initiale. L'une est une méthode de classe et l'autre est une méthode d'instance.
+ (id)arrayWithCapacity:(NSUInteger)numItems;
- (id)initWithCapacity:(NSUInteger)numItems;
maintenant le développeur Java paresseux que je suis, pourquoi aurais-je jamais choisir la méthode d'instance sur la méthode de classe en sachant que à un moment donné dans le temps que je dois nettoyer après moi?
Je suppose que je peux manquer un point fondamental ici ... est-ce simplement une question de déterminer quand l'objet est libéré? autorelease
dans la méthode de classe par rapport à release
dans la méthode d'instance? Je suppose que sur une plate-forme avec des ressources très limitées (iPhone) je devrais m'abstenir d'utiliser la méthode de classe et libérer l'objet dès que j'en ai fini avec lui?
Merci!
Est-ce vrai maintenant que nous avons un comptage automatique des références? Il me semble que les deux méthodes doivent être à peu près identiques maintenant puisque le code ARC applique fondamentalement une auto-libération implicite à l'objet alloc/init créé maintenant. Il verrait que dans la plupart des cas, nous devrions utiliser les méthodes de commodité maintenant si cela existe pour la simplicité et la clarté, car il n'y a pas de pénalité de performance, si je comprends bien. – Mike