Cocoa-Touch. ¿Cuál es exactamente la diferencia entre estos métodos NSMutableData?
-
05-07-2019 - |
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
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