2013-03-02 15 views
9

Ich bin mitWie zu stoppen/ungültig NSTimer

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

Ich möchte einen Aufruf dieser Timer zu stoppen.

viewDidDisappear 

Wie kann ich das tun? ungültig machen?

Antwort

26

Deklarieren NSTimer *myTimer in .h-Datei.

Assign Instanz wie der tom wie dieser

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

Stopp und Invalidate dies mit

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

Ist der Nullwert erforderlich? Oder nur versuchen, den Speicher aktiv aufzuräumen? – Kevin

+0

ja es ist erforderlich.und es reinigt auch speicher. –

+0

Ich bekomme die Erinnerung, aber warum ist es erforderlich? – Kevin

1

Ja, Sie würden die - (void)invalidate Instanzmethode von NSTimer verwenden.

Natürlich, das zu tun, würden Sie die NSTimer Instanz von [NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:] in eine Ivar oder Eigentum Ihrer View-Controller zurück speichern müssen, damit Sie es in viewDidDisappear zugreifen können.

1

invalidate Methode der NSTimer für Stop-Timer verwenden

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

Wenn Sie nicht dann vergessen Sie ARC nicht [self.timer release];

1

zum Anhalten oder ungültig zu machen NSTimer ersten haben Sie Instanz für NSTimer in global zu erstellen.

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

, dass nach wie diese versuchen,

if (Timer != nil) { 

      [Timer invalidate]; 
      Timer = nil; 

     } 
4

Versuchen Sie, diese

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]; 
    }