5

@selectorin で引数を送信できますNSTimerか? をリリースしたい場合NSTimer、次の手順は正しいdeallocですか?

[timer invalidate];
[timer release];
4

4 に答える 4

15
于 2009-07-23T13:49:59.503 に答える
8

2 つの方法は異なることを行います。タイマーを所有している (保持、割り当て、またはコピーした) 場合は、それを解放する必要があります。実行ループでスケジュールした場合は、実行ループで解放するために無効化する必要があります。両方を行った場合は、タイマーを解放して無効にする必要があります (ただし、通常は、タイマーを所有する実行ループがあれば十分です)。

于 2009-07-23T12:07:09.793 に答える
1

常に、リリースは最後に行うことです。何かを解放すると、オブジェクトを逆参照しても安全であるという保証はありません。つまり、そのオブジェクトにメッセージを送信しても安全ではなくなります。

于 2009-07-23T12:54:44.910 に答える
0

これは、まだ実行中の (そして停止したい) タイマーの割り当てを解除する正しい方法です。

于 2009-07-23T12:24:06.197 に答える