문제

나는 매 초마다 발사되는 nstimer가 있고, 그 두 번째로 텍스트 속성을 설정하여 Uilabel을 업데이트합니다.

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

잘 작동하지만 성능 도구 -> 누출로 시작하여 Xcode에서 실행하면 메모리가 계속 등반 및 등산 및 등반을 계속하는 것으로 보입니다.

내 이해를 통해 문자열은 자동 정리되어야합니다 (메모리가 감소하거나 증가하는 것을 멈추지는 않지만).

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

감사!

업데이트 : 타이머를 만들기위한 코드는 다음과 같습니다.

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

타이머 마감시 정리 코드는 다음과 같습니다.

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

이것에 문제가 있습니까? 타이머가 완료되면 메모리가 해제 될 수 있다고 생각했지만 그렇지 않습니다.

도움이 되었습니까?

해결책

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

다른 팁

호기심이 없어도 속성을 설정하는 대신 [나머지 SetText :]를 사용하는 경우 문제가 여전히 발생합니까? 코드가 잘 보입니다 ... StringwithFormat가 string을 자동 표시하기 때문에 메모리를 정리해야합니다.

시도해야 할 또 다른 방법 : Objective-C에서 스레드를 생성 할 때 스레드 실행 중에 작성한 것들이 정리되도록 모든 코드를 nsautoreleasepool로 랩핑해야합니다. 그것은 이미 존재해야하기 때문에 여기서 차이를 만들어서는 안됩니다. 그러나 그것은 샷의 가치가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top