亲爱的社区。
我尝试设置NSTimer:
@interface GetExternalInfo : NSOperation {
NSTimer *keepAliveTimerMain;
@property (nonatomic,retain) NSTimer *keepAliveTimerMain;
.m:
@synthesize keepAliveTimerMain
-(void) main;
{
self.keepAliveTimerMain = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(keepAlive:) userInfo:nil repeats:YES];
[keepAliveTimerMain fire];
[[NSRunLoop currentRunLoop] addTimer:self.keepAliveTimerMain forMode: NSDefaultRunLoopMode];
BOOL timerState = [keepAliveTimerMain isValid];
NSLog(@"STAT:Timer Validity is: %@", timerState?@"YES":@"NO");
- (void)keepAlive:(NSTimer *)theTimer
{
BOOL currentState = [self isCancelled];
NSLog(@"STAT:cancelled state is %@.\n",currentState?@"YES":@"NO");
}
在日志中
2011-02-02 18:58:31.041
雪[54705:5d07] STAT:已取消状态
没有。 2011-02-02 18:58:31.042
雪[54705:5d07] STAT:计时器有效性
是是的
我只看到一次。每5秒没有下一次重复尝试
在这种情况下有什么意见吗? GC已启用。
最佳答案
当前线程中是否有运行循环?计时器需要一个运行循环才能触发。我注意到您手动调用-fire
,这解释了为什么调用-keepAlive
的原因,但这实际上并未启动计时器。