Cacau-Touch. O que é exatamente a diferença entre esses métodos NSMutableData?
-
05-07-2019 - |
Pergunta
Uma coisa que eu sou um pouco incerto é a diferença entre esses métodos NSMutableArray:
// Class Method Style
NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];
e
// Instance Method Style
NSMutableData *myMutableDataInstance = nil;
myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];
Sob o capô, o que eactly é o método da classe está fazendo aqui? Como é que diferem do método de instância?
Cheers, Doug
Solução
O método de classe e cria um objecto autoreleases NSMutableArray.
O método de instância initialzes um objeto que você tem que alocar si mesmo. O código que você escreveu realmente não vai fazer nada, porque myMutableArrayInstance
é nil
. O método de classe é aproximadamente equivalente a esta:
NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];
E como observa Peter Hosey em comentários, o que realmente significa o seguinte:
NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
initWithCapacity:WholeLottaData]
autorelease];
que terá resultados diferentes da acima se o método initWithCapacity:
devolve um objecto diferente.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow