71 votes

Quelle est la différence entre [Classe] et [[Catégorie alloc] init] dans iOS?

Double Possible:
alloc, init, et de nouveau en Objective-C

Je suis un peu confus au sujet de [Class new] et [[Class alloc] init]. J'ai défini un objet content l'aide [Class new] et [[Class alloc] init].

(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];

Ma question est sur les différences entre [Class new] et [[Class alloc] init]. Pour moi, (1) et (2) sont similaires. Si (1) et (2) sont semblables, alors pourquoi nous utilisons [[Class alloc] init] la plupart du temps, par rapport à l' [Class new]? Je pense qu'il doit y avoir une certaine différence.

Veuillez expliquer les différences, avantages et inconvénients des deux?

132voto

Shantanu Points 1296

Alloc : méthode de la Classe de NSObject. Retourne une nouvelle instance de la classe.

Init : méthode d'Instance de NSObject. Mis en œuvre par les sous-classes pour initialiser un nouvel objet (le récepteur) immédiatement après le mémoire qui a été allouée.

Nouveau : méthode de la Classe de NSObject. Alloue une nouvelle instance de la classe, il envoie un message init, et retourne l'objet initialisé.

Version : méthode d'Instance de NSObject délégué. Décrémente le récepteur du compte de référence.

Autorelease : méthode d'Instance de NSObject délégué. Ajoute le récepteur à l'actuel autorelease pool.

À retenir: méthode d'Instance de NSObject délégué. Incrémente le récepteur du compte de référence.

Copie : méthode d'Instance de NSObject délégué. Retourne une nouvelle instance d'une copie du récepteur.

Donc pour conclure, nous pouvons dire que

alloc va avec init

nouveau = alloc + init

29voto

dreamlax Points 47152

L' +new méthode est simplement un raccourci pour +alloc et -init. La sémantique de propriété sont identiques. Le seul avantage à l'utilisation d' +new , c'est qu'il est plus concis. Si vous avez besoin de fournir des arguments à la classe de l'initialiser, vous devrez utiliser l' +alloc et -initWith... méthodes à la place.

9voto

Fiire Points 488

Ici: alloc, init, et de nouveau en Objective-C

En gros, c'est une question de moderne par rapport aux. La plupart avantage direct de l'init de plus nouveau, c'est qu'il ya beaucoup de coutume init méthodes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X