NSTimer の止め方

m_timer = [[NSTimer scheduledTimerWithTimeInterval:1.0
                                            target:self
                                          selector:@seletor(timerCallback:)
                                          userInfo:nil
                                           repeats:YES] retain];

この NSTimer を削除する際に、

[m_timer release]:

このように、単に release しただけでは削除されず、タイマーも止まりません。
なぜかというと、メインループ(のスケジューラ)がこの NSTimer を参照しているからです。


ということで、解放する前には確実に invalidate してメインループから NSTimer を取り除いておきましょう。

[m_timer invalidate];
[m_timer release];