2013-03-02 20 views
9

UżywamJak powstrzymać/unieważnić NStimer

[NSTimer scheduledTimerWithTimeInterval:0.1f 
            target:self 
           selector:@selector(update) 
           userInfo:nil 
           repeats:YES]; 

Chcę przestać nazywać ten czasomierz jeden.

viewDidDisappear 

Jak mogę to zrobić? unieważnić?

Odpowiedz

26

stwierdzenie NSTimer *myTimer w pliku .h.

Przypisywanie Instancja jak powiedział Tom jak to

myTimer = [NSTimer scheduledTimerWithTimeInterval:0.1f 
            target:self 
            selector:@selector(update) 
            userInfo:nil 
            repeats:YES]; 

zatrzymać i unieważnić użyciu tego

- (void) viewDidDisappear:(BOOL)animated 
{ 
    [myTimer invalidate]; 
    myTimer = nil; 
} 
+0

Czy zero jest wymagane? A może po prostu chcesz aktywnie wyczyścić pamięć? – Kevin

+0

Tak, jest to wymagane. Czyści również pamięć. –

+0

Dostaję pamięć, ale dlaczego jest ona wymagana? – Kevin

1

Tak, można użyć metody instancji - (void)invalidate z NSTimer.

Oczywiście, aby to zrobić, musiałby zapisać instancji NSTimer zwrócony z [NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:] się z ivar lub własności kontrolera widoku, dzięki czemu można uzyskać do niego dostęp w viewDidDisappear.

1

invalidate Metoda NSTimer jest używać do zatrzymania zegara

- (void) viewDidDisappear:(BOOL)animated 
{ 
     [super viewDidDisappear:animated]; 
     [self.timer invalidate]; 
     self.timer = nil; 
} 

Jeżeli nie jesteś ARC potem nie zapomnieć [self.timer release];

1

zatrzymywania lub unieważniania NSTimer najpierw trzeba utworzyć instancję dla NSTimer w skali globalnej.

Timer=[NSTimer scheduledTimerWithTimeInterval:0.1f 
            target:self 
           selector:@selector(update) 
           userInfo:nil 
           repeats:YES]; 

potem spróbować tak,

if (Timer != nil) { 

      [Timer invalidate]; 
      Timer = nil; 

     } 
4

Try This

viewController .h

NSTimer *timer; 

viewcontroller.m

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


    - (void) viewDidDisappear:(BOOL)animated 
    { 
     [super viewDidDisappear:animated]; 
     [timer invalidate]; 
    }