2011-12-17 1 views
1

내가 NSTimer 내 .H에서 그리고/분의있는 viewDidLoad 선언이 나는 코드가 있습니다NSTimer iPhone을 출시 하시겠습니까?

timer = [NSTimer scheduledTimerWithTimeInterval:kComplexTimer target:self selector:@selector (main) userInfo:nil repeats:YES]; 

가 나는 또한 [타이머 릴리스]이를; 내 dealloc에.

그러나보기를 종료하고 돌아올 때 타이머가 실제로 해제되지 않았지만 속도가 두 배 빨라졌습니다! 이걸 어떻게 해결합니까 & 내가 뭘 잘못하고 있니?

감사

답변

3

멋진 대답,하지만 시간이 원치 않는 예외를 피하기 위해 무기 호인지 여부를 확인하는 것이 좋다 ..

if(timer ! = nil) 
{ 
    [timer invalidate]; 
    timer = nil; 
} 

감사합니다 ...

6

당신이 그것을 유지하지 않은 당신이 그것을 해제 할 필요가 없습니다 - 원칙적으로. 타이머를 멈추게하려면 [timer invalidate];으로 전화하면됩니다. 재설정하려는 경우

2
[timer invalidate]; 
timer = nil; 

두 번째 줄이 중요하다 NSTimer

+0

+1'nil'은 매우 중요하다. 이전에는 타이머를 사용하고 그 부분을 추가 할 때까지 재사용하는 데 익숙했습니다. – dredful

1

당신은이 "새로운", "ALLOC", "유지"에 의해 생성하지 않는 것이 객체에 출시 부르지해야한다 " 부".

이 경우 scheduleTimerWithTimeInterval 메서드로 Timer를 만들었으므로 릴리스 메서드를 호출하지 말고 [timer invalidate]를 호출하여 타이머를 중지해야합니다.