に送信release
してNSTimer
も無効にはなりません。
が実行ループでスケジュールされている場合NSTimer
、実行ループはタイマーを保持します。したがって、(スケジュールされた)タイマーを解放しても、保持カウントはゼロより大きくなります。また、発砲し続けます。タイマーのターゲットの割り当てが解除されている場合、タイマーが起動するとアプリがクラッシュする可能性があります。
スケジュールされたタイマーに送信invalidate
すると、実行ループがタイマーを解放します。
NSTimer
が実行ループでスケジュールされていない場合は、無効にする必要はありません。invalidate
ただし、タイマーがスケジュールされているか、スケジュールされていないか、すでに無効になっているかにかかわらず、タイマーに送信しても安全です。
したがって、すでに無効になっていることが確実でない限りinvalidate
、メソッドでタイマーを送信する必要があります。dealloc
を使用してタイマーを作成した場合は[[NSTimer alloc] initWith...]
、それも解放する必要があります。ただし、[NSTimer timerWith...]
またはを使用してタイマーを作成した場合は、タイマーへの参照を所有していないため、タイマーを解放しないでください[NSTimer scheduledTimerWith...]
。