Pregunta

Una cosa que no estoy clara es la diferencia entre estos métodos NSMutableArray:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

y

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

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

Bajo el capó, ¿qué está haciendo aquí el método de clase? ¿En qué se diferencia del método de instancia?

Saludos, Doug

¿Fue útil?

Solución

El método de clase crea y libera automáticamente un objeto NSMutableArray.

El método de instancia inicializa un objeto que debe asignar usted mismo. El código que ha escrito en realidad no hará nada, porque myMutableArrayInstance es nil . El método de clase es aproximadamente equivalente a esto:

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

Y como Peter Hosey señala en los comentarios, realmente significa esto:

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

que tendrá resultados diferentes a los anteriores si el método initWithCapacity: devuelve un objeto diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top