私はメソッドを10秒ごとに呼びたいと思っていますが、NSTimer以外のものを使用したいと思います。これを行うには何が使えますか?NSTimerを使用せずに10秒ごとにメソッドをトリガーする方法はありますか?
答えて
....
あなたはCocos2Dを使用している場合は、スケジュールの方法、ここで
を使用すると、その下のリンクです両方を示しています。
Cocos2Dを使用していないのであれば、NSTimerを使うのはなぜですか? –
私はあなたがperformSelector:withObject:afterDelay:
設定でループを作成することができます
[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(someMethod)
userInfo:nil
repeats:YES];
はい、私はすでにCADisplaylink –
を使用しています。ボールが10秒ごとに動くようにしたいからですが、同じ方法でタイマーを使うことはできません。 –
私はそれが問題だとは思わない - でも'someMethod'を呼び出す' anotherMethod'を作成してください:) –
...あなたはタイマーを使いたくありませんでしたが、ちょうどあなたがそれをタイマーであることだろうかシンプル知ることを確認すると知っていますafterDelayを10.0に設定します。
これはお勧めできませんが、NSTimerを使用してください。あなたはCocos2Dを使用していない場合は、あなたがこれを行うにはNSTimerを使用する必要が
- (void)callMeEvery10Seconds
{
[self performSelector:@selector(callMeEvery10Seconds)
withObject:nil
afterDelay:10.0];
// ... code comes here ...
}
あなたはタイマーを使用したくない場合は、内部NSOperationQueue、neverthを利用しますどのGCDを使用することができますすべての場合において誠実さが働くでしょう。例えばのために:私は、上記の方法がうまくいかなかったので、NSOperationから継承したクラスを持っていたので、私はGCDで行く行くた:
double delayInSeconds = 3.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_after(popTime, queue, ^{
[self methodYouWantToCall];
});
上記のコードは、すべて3秒後にメソッドを呼び出しますmethodYouWantToCall。
「内部でNSOperationQueueを使用するGCD」これは正しくありません。これは逆です。 –
そうするための最も簡単な方法は次のとおりです。あなたはタイマーを使用したくないのはなぜ
- (void)scheduleLoopInSeconds:(NSTimeInterval)delayInSeconds
{
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_after(popTime, queue, ^{
[self callWhatEverMethodYouWant];
[self shceduleLoopcaInSeconds:delayInSeconds];//set next iteration
});
}
// now whenever you like call this, and it will be triggering "callWhatEverMethodYouWant" every 10 secs.
[self shceduleLoopcaInSeconds:10.0];
WOW、私はこの方法をテストしましたが、正常に動作しますが、NSTimerを使用した場合のCPU使用率は約25%で、99%に急上昇しました。 WTF?私はこれがブロックのディスパッチに関連するオーバヘッドによって呼び出されていると思います! – SpaceDog
- 1. 10秒ごとにPHPスクリプトをリフレッシュする方法はありますか?
- 2. 10秒間に500ミリ秒ごとにマウスの位置を追跡する方法はありますか?
- 3. Swift:メソッドを10秒ごとに呼び出す方法
- 4. rich:dataScroller 10秒ごとにページを切り替える方法は?
- 5. ボタンやタグを使用せずにブートストラップの折りたたみをトリガーする方法はありますか?
- 6. CSSアニメーションを10秒ごとに再生する方法
- 7. 5秒ごとにトリガーするボタン
- 8. 10秒ごとにJS関数を呼び出す方法
- 9. Angularで10秒ごとに関数を呼び出す方法
- 10. 1秒ごとにNSTimerを実行すると税金はかかりますか?
- 11. X秒ごとにメソッドを実行する方法
- 12. メソッドを実行せずにメソッド呼び出しと戻り値をモックする方法はありますか?
- 13. パッケージをインストールせずにPostSharpを使用する方法はありますか
- 14. 10秒ごとにFTPを使用してテキストファイルを取得
- 15. MakeSignature.SignDetached()メソッドを使用せずにpdfにデジタル署名する方法はありますか?
- 16. C#WebAPIメソッドを10秒ごとに実行
- 17. Android:サービスから10秒ごとにhttpリクエストを送信する方法
- 18. Androidサーバーから10秒ごとにマーカーをアニメーション化する方法
- 19. PHP PDO :: quoteメソッドを使用せずに接続を作成する方法はありますか?
- 20. 編集モードでtableViewを設定せずにcanMoveRowAtIndexPathメソッドを使用する方法はありますか?
- 21. は約5〜10秒ごとに
- 22. Swift 3でNSTimerから1秒ごとにカスタムtableviewcellラベルを更新します。
- 23. 起動エージェントは10秒ごとにスクリプトを実行します
- 24. Selenium pythonは10秒ごとにテストを行います
- 25. Android - ScheduledExecutorServiceを使用して10秒ごとにトーストを実行する方法は?
- 26. 1秒ごとに異なるアクションを実行してから4秒ごとに繰り返す方法
- 27. Javascript:eval()を使用せずに文字列をコールバックとして使用する方法はありますか?
- 28. CSSを使用せずにブートストラップでデータテーブルのヘッダとデータを使用する方法はありますか?
- 29. すぐにNSTimerをトリガーするには?
- 30. jQueryを使用して10秒ごとにphpデータでdivを更新する
? NSTimerはこの問題の完璧な解決策のようです。 –
Xcodeはフレームワークや言語ではなく、IDEであるため、IDE自体について質問しない限り、質問にタグを付けてタイトルに配置しないでください。 –