亲爱的社区。
我尝试设置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的原因,但这实际上并未启动计时器。

08-18 13:08