2009-05-03 6 views
0

나는 매 순간을 발사하고, 그 위에 두 번째 내가 지금처럼 텍스트 속성을 설정하여 UILabel의 업데이트 NSTimer 있습니다UILabel 메모리 누출?

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

나는 공연으로 시작으로 엑스 코드에서 실행할 때 잘 작동하지만, 도구 -> 누출, 메모리가 등반 및 등반 및 등반에만 계속 나타나는 것으로 나타났습니다.

제 생각에 문자열은 자동 축소됩니다 (비록 메모리 감소가 보이지 않거나 증가하지는 않지만).

메모리 누수가 있습니까? 내 메모리 사용량을 확인하기 위해이 작업을 수행 할 수있는 더 좋은 방법이 있습니까?

감사합니다.

업데이트 :이 문제

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

아무것도를 다음과 같이 타이머 마무리에 정리에

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

코드는 다음과 같이 타이머를 생성하는 코드는? 일단 타이머가 끝나면 메모리가 해제 될 수 있다고 생각했지만 그렇지 않습니다.

+0

이 줄이 늘어나는 메모리에 책임이 있다고 결정하셨습니까? (주석으로 문제를 해결할 수 있습니까?) 아마도 당신은 다른 곳에서 누출되고있을 것입니다. – smorgan

+0

예, 나는이 선들이 책임이 있음을 명확히 결정했습니다. 그것을 주석 처리하면 문제가 해결됩니다. – user26218

+0

관련없는 동안, 당신이 그것을 만들 때 인스턴스를 유지하지 않기 때문에 당신이 timeTimer를 과도하게 발표하고 있다고 생각합니다. –

답변

1

나는 성능 도구를 이해하지 못했다는 것이 문제라고 생각한다. 활동 모니터로 실행해도 메모리 사용량은 증가하지 않습니다.

+0

"Total Allocations"는 릴리스 된 이후에도 어느 시점에 할당 된 메모리의 양을보고있었습니다. "Net Allocations"는 현재의 메모리 사용량입니다. 누수 도구는 누출 된 개체를 구체적으로 보여줍니다. –

0

호기심에서 벗어나 속성을 설정하는 대신 [remainingLbl setText :]를 사용하면 문제가 계속 발생합니까? 귀하의 코드를 잘 보인다 ... stringWithFormat 문자열을 autoreleases 이후 메모리 정리해야합니다.

또 다른 한 가지 : Objective-C에서 스레드를 만들 때 NSAutoreleasePool의 코드를 모두 래핑해야 스레드의 실행 중에 작성한 내용이 정리됩니다. 그것은 이미 존재해야하는 것처럼 여기에 차이를 만들어서는 안됩니다. 그러나 그것은 가치가 있습니다.

+0

[remainingLbl setText :] 정확히 동일하게 수행됩니다. Re : NSAutoreleasePool - 필자는 Autorelease 풀 설정이 필요 없다고 생각하고 있습니다. 내 코드는 타이머를 만들고 삭제하여 원래 게시물에 추가했습니다. – user26218