Cacao-Touch. Quelle est exactement la différence entre ces méthodes NSMutableData?
-
05-07-2019 - |
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
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