Stoppen Sie eine NSRunLoop von einem timer

Habe ich eine RunLoop mit einem timer, der die updates ein label, das zeigt ein countdown. Ich brauche die RunLoop zu stoppen, sobald der countdown null erreicht, für den Fall, das der timer beendet, die normalerweise ich konnte einfach runUntilDate, mit dem Datum wird das aktuelle Datum + die Zeit auf den countdown. Das problem ist, wenn der Benutzer bricht den countdown ab einem klicken, bevor es fertig ist. Ich weiß nicht, wie zu sagen, die RunLoop zu stoppen, aus den Abbrechen-button-Aktion. Hier ist der code für die RunLoop:

    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
                            [self methodSignatureForSelector:@selector(updateCountdownLabel:)]];
[invocation setTarget:self];
[invocation setSelector:@selector(updateCountdownLabel:)];
[[NSRunLoop mainRunLoop] addTimer:[NSTimer timerWithTimeInterval:1 invocation:invocation repeats:YES] forMode:NSRunLoopCommonModes];

Die Methode zeigt nur, dass Sie das Etikett zu reduzieren, indem 1 in jeder Schleife.

Ich könnte sagen, die Abbrechen-Schaltfläche zu ändern, das label null ist, und haben den run loop selector prüfen, ob der Wert null ist, aber könnte die RunLoop der eigenen Selektor sagen, es zu stoppen?

cancelPerformSelector:target:argument:

cancelPerformSelectorsWithTarget:

Diese sind die nächsten, die ich gefunden habe, aber Sie scheinen nicht zu arbeiten, aus dem inneren der RunLoops eigenen Selektor, oder zumindest nicht in irgendeiner Weise, die ich ausprobiert habe.

Grundsätzlich muss ich dem button sagen, die RunLoop zu stoppen oder irgendwie zu stoppen die RunLoop aus seinen eigenen Selektor.

Dank.

Ein Selektor ist einfach der name einer Methode. Ich habe korrigiert Ihre Verwendungen des Wortes in meinem edit.

InformationsquelleAutor Elbimio | 2011-07-08

Schreibe einen Kommentar