Objective-C: vazamento de memória ou não com atribuição múltipla com o AutoRelease?
-
25-09-2019 - |
Pergunta
Se eu fizer a seguinte coisa, isso fará vazamentos de memória?
SomeClass* tmp;
NSDate* thetmpdate;
tmp = [[[SomeClass alloc] init] autorelease];
thetmpdate = [NSDate date];
// Do something long with tmp and date
tmp = [[[SomeClass alloc] init] autorelease];
thetmpdate = [NSDate date];
// Do something long with tmp and date
tmp = [[[SomeClass alloc] init] autorelease];
thetmpdate = [NSDate date];
// Do something long with tmp and date
Solução
Não, não há vazamento no código que você postou. Todos os objetos serão lançados com autoridade quando o pool de autorlease for lavado, independentemente de a variável que mantém seus ponteiros é alterada ou não.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow