我有一個類NSTimer *myTimer;
變量。在某些時候,我做的:NSTimer不停止
myTimer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(doStuff) userInfo:nil repeats: YES];
進一步,我有一個方法:
- (void)dealloc
{
if (myTimer) { //if myTimer==nil it already has been stopped in the same way
[myTimer invalidate];
myTimer = nil;
}
}
現在,問題:
- (void)doStuff
{
if(myTimer)
{
//do stuff
}
}
,我停止我的定時器類時通過釋放當我釋放課程時,定時器繼續運行,並繼續發射事件。難道我做錯了什麼?看起來dealloc方法從來沒有被調用,否則myTimer將爲零,即使選擇器被觸發,它也不會進入if(myTimer)
所以你應該清理計時器,然後再期待物體消失。 – 2010-09-20 16:09:09
@Joshua +1這就是我所說的......你必須使計時器無效以便讓你的對象釋放,這可能最終觸發'dealloc'方法(只是沒有太多的單詞):) – 2010-09-20 16:11:59