3

私はそれを整理するためにいくつかの厄介なコードに戻ります.NSTimersから返されたものscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:を保持し、それらをフィールドに格納してから、フィールドが起動したときにフィールドを解放してnullにしていることがわかります. 場合によっては、タイマーを使用して後で無効化メッセージを送信しますが、多くの場合は送信しません。

最近のコードでは、通常、タイマーをスケジュールするだけで忘れてしまいます。コンストラクターメソッドが自動解放され、タイマーがアクティブな間、実行ループによって保持されることを理解しています。したがって、これには問題はありません。

それで、私の理解を締めくくるために-タイマーを保持しなければならない他の理由はありますか、それとも私が今していることは受け入れられたイディオムですか?

これはすべて iPhone コードのコンテキストにありますが、これが iPhone 固有のものであるとは思いません。

4

2 に答える 2

3

実行ループに保持を自分で処理させただけです-タイマーを所有しているのは実行ループであり、私ではありません。私の言いたいことがわかるなら。

于 2009-03-02T16:47:59.193 に答える
1

私は自分の質問に答えています。

クラスリファレンスドキュメントを閲覧していたので、私は主に質問をしていましたが、この問題は実際には明らかにされていませんでした. それ以来、ADC の Timer Programming Topics: Using Timers の記事を読みましたが、特に最後にあるメモリ管理のセクションでかなり詳しく説明されています。

それによると、私が今していること(invalidateやisValidなどを呼び出す必要がない限り、スケジューリングだけ)は正しい方法です。

于 2009-03-02T17:02:33.697 に答える