@selector
in で引数を送信できますNSTimer
か? をリリースしたい場合NSTimer
、次の手順は正しいdealloc
ですか?
[timer invalidate];
[timer release];
2 つの方法は異なることを行います。タイマーを所有している (保持、割り当て、またはコピーした) 場合は、それを解放する必要があります。実行ループでスケジュールした場合は、実行ループで解放するために無効化する必要があります。両方を行った場合は、タイマーを解放して無効にする必要があります (ただし、通常は、タイマーを所有する実行ループがあれば十分です)。
常に、リリースは最後に行うことです。何かを解放すると、オブジェクトを逆参照しても安全であるという保証はありません。つまり、そのオブジェクトにメッセージを送信しても安全ではなくなります。
これは、まだ実行中の (そして停止したい) タイマーの割り当てを解除する正しい方法です。