Pergunta

Eu tenho um NSTimer que os incêndios fora a cada segundo, e em que a segunda atualização I uma UILabel, definindo a propriedade de texto assim:

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];   

Ele funciona muito bem, mas quando eu executá-lo no Xcode com Start Com Ferramenta Performance -.> Vazamentos, parece que a memória só continua a escalada e escalada e escalada

No meu entendimento, o texto deverá ser autoreleased (embora eu nunca ver a diminuição de memória, ou parar aumentando).

Este é um vazamento de memória? Existe uma maneira melhor que eu posso fazer isso para manter o meu uso de memória em cheque?

Obrigado!

Update: código para criar o timer é a seguinte:

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];  

código para limpeza em acabamento temporizador é a seguinte:

[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;

errado Qualquer coisa com isso? Eu pensei que a memória pode ser liberado uma vez que os acabamentos temporizador, mas isso não acontece.

Foi útil?

Solução

Eu acredito que o problema era que eu não entendia as ferramentas de desempenho. Correndo com o Activity Monitor não mostra o uso de memória aumentando.

Outras dicas

Só por curiosidade, o problema ainda ocorre se você usar [remainingLbl setText:] em vez de definir a propriedade? Sua aparência de código bem ... a memória devem ser limpos uma vez stringWithFormat autoreleases a string.

Uma outra coisa para tentar: quando você criar threads em Objective-C você tem que envolver todo o código em um NSAutoreleasePool para que as coisas que você criar durante a execução do segmento são limpos. Isso não deve fazer a diferença aqui como um já deve existir -. Mas vale a pena um tiro

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top