変数を持つクラスがありNSTimer *myTimer;
ます。ある時点で私はします:
myTimer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(doStuff) userInfo:nil repeats: YES];
さらに、私は方法があります:
- (void)doStuff
{
if(myTimer)
{
//do stuff
}
}
そして、クラスが次の方法で解放されたら、タイマーを停止します。
- (void)dealloc
{
if (myTimer) { //if myTimer==nil it already has been stopped in the same way
[myTimer invalidate];
myTimer = nil;
}
}
さて、問題は、クラスを解放すると、とにかくイベントが発生し続けるということです。私は何か間違ったことをしていますか?deallocメソッドが呼び出されることはないようです。そうしないと、myTimerはnilになり、セレクターが起動されても、if(myTimer)