Double Possible:
alloc, init, et de nouveau en Objective-CJe suis un peu confus au sujet de
[Class new]
et[[Class alloc] init]
. J'ai défini un objetcontent
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?
- alloc, init, et new en Objective-C (4 réponses )
Réponses
Trop de publicités?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
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.
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.