【发布时间】:2009-09-15 20:56:32
【问题描述】:
【问题讨论】:
标签: ios objective-c iphone nstimer
【问题讨论】:
标签: ios objective-c iphone nstimer
@interface
NSTimer *autoTimer;
@implementation
// Start timer
autoTimer = [NSTimer scheduledTimerWithTimeInterval:(3.0)
target:self
selector:@selector(autoTimerFired:)
userInfo:nil
repeats:YES];
// Stop timer:
[autoTimer invalidate];
autoTimer = nil;
【讨论】:
autoTimer.invalidate(),不需要设置为null。
INVALIDATE IT @kkazakov!
首先,你要保留一个指向计时器的指针
self.packetTimer = [NSTimer timerWithTimeInterval:CONNECTION_TIMEOUT target:self selector:@selector(connectionTimeout:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:packetTimer forMode:NSDefaultRunLoopMode];
如果您想在代码中的其他地方取消它,只需调用:
[self.packetTimer invalidate];
self.packetTimer = nil;
【讨论】:
invalidate 将导致运行循环释放它的引用,但是当它被分配给 packetTimer 时,这里还有一个额外的保留。