Cacao-Touch. Qual è esattamente la differenza tra questi metodi NSMutableData?
-
05-07-2019 - |
Domanda
Una cosa su cui non sono chiaro è la differenza tra questi metodi NSMutableArray:
// Class Method Style
NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];
e
// Instance Method Style
NSMutableData *myMutableDataInstance = nil;
myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];
Sotto il cofano, che cosa sta facendo di preciso il metodo di classe qui? In cosa differisce dal metodo di istanza?
Saluti, Doug
Soluzione
Il metodo class crea e rilascia automaticamente un oggetto NSMutableArray.
Il metodo di istanza inizializza un oggetto che devi allocare tu stesso. Il codice che hai scritto in realtà non farà nulla, perché myMutableArrayInstance
è nil
. Il metodo class è approssimativamente equivalente a questo:
NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];
E come osserva Peter Hosey nei commenti, significa davvero questo:
NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
initWithCapacity:WholeLottaData]
autorelease];
che avrà risultati diversi da quelli precedenti se il metodo initWithCapacity:
restituisce un oggetto diverso.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow