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

È stato utile?

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
scroll top