カウントダウンを表示するラベルを更新するタイマーでRunLoopを作った。タイマーが正常に終了した場合、カウントダウンが現在の日付+カウントダウンの時刻であるrunUntilDateを使用できるように、カウントダウンがゼロになったら、RunLoopを停止する必要があります。問題は、ユーザーが終了する前にボタンからカウントダウンをキャンセルした場合です。 RunLoopにキャンセルボタンの動作を停止するよう指示する方法はわかりません。 RunLoopのコードは次のとおりです。タイマーからNSRunLoopを停止する
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];
このメソッドは、各ループで1ずつ減らすようにラベルに指示します。
私はゼロにラベルを変更し、値がゼロであれば実行ループセレクタチェックを持つようにキャンセルボタンを伝えることができますが、実行ループの独自のセレクタが停止するようにそれを言うことができますか?
cancelPerformSelector:target:argument:
cancelPerformSelectorsWithTarget:
これらは私が見つけた最も近いが、彼らはRunLoops私はそれらを試したどのような方法で自分のセレクタ、または少なくともない内側から動作するようには思えません。
基本的に私はボタンが停止、または何らかの形でそれ自身のセレクタから実行ループを停止するために実行ループを伝えておく必要があります。
ありがとうございました。
セレクタは単なるメソッドの名前です。私は自分の編集で単語の使用法を修正しました。 –