Wenn Sie in der Lage sein wollen, um den Timer abzubrechen, müssen Sie auf die beziehen Timer, den du annullierst, und das bedeutet, du musst den Zeiger auf den Timer halten, siehe Justins Antwort.
Einen Verweis auf den Timer zu halten ist der richtige Weg, aber der Vollständigkeit halber können Sie auch die -performSelector:withObject:afterDelay:
Methode als armes Man's Timer verwenden. Dieser Anruf kann mit +cancelPreviousPerformRequestsWithTarget:
ungültig gemacht werden. Beispielcode:
- (void) viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(timerTick) withObject:nil afterDelay:10];
}
Und dann:
- (void) viewWillDisappear
{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[super viewWillDisappear];
}
Aber das ist nicht der richtige Weg, es zu tun, weil es andere seine Anfrage durchführen-Selektor auf Ihrem Objekt anhängig, die Sie aufheben würden. Es ist am besten, den Timer in der Nähe zu halten, damit Sie genau wissen, was Sie stornieren.
Es ist übrigens auch eine schlechte Idee, einen Timer in -viewDidLoad
zu starten. Das Laden der Ansicht kann jederzeit erfolgen, ohne dass eine Beziehung zur Anzeige der Ansicht besteht.
Was meinen Sie mit * Ich möchte kein NSTimer Objekt * erstellen? Sie erstellen bereits eines mit 'planedTimerWithTimeInterval'. – sch
Ich meine, ich halte den Timer, den ich erstelle, nicht fest. Ist es möglich? – Voloda2