Question

Une chose que je ne comprends pas très bien, c'est la différence entre ces méthodes NSMutableArray:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

et

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];

Sous le capot, que fait la méthode de classe ici? Comment cela diffère-t-il de la méthode d'instance?

Salut, Doug

Était-ce utile?

La solution

La méthode class crée et libère automatiquement un objet NSMutableArray.

La méthode d'instance initialise un objet que vous devez vous allouer. Le code que vous avez écrit ne fera rien, car myMutableArrayInstance est nil . La méthode class est à peu près équivalente à ceci:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];

Et comme le note Peter Hosey dans les commentaires, cela signifie vraiment ceci:

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];

qui aura des résultats différents de ceux indiqués ci-dessus si la méthode initWithCapacity: renvoie un objet différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top