【问题标题】:Check if NSTimer selector has finished working检查 NSTimer 选择器是否已完成工作
【发布时间】:2012-02-09 11:22:52
【问题描述】:

我每 3 秒调用一次NSTimer 中的服务方法。但是,在每次调用该方法之前,我想检查计时器中的前一个是否完成。我已经完成了以下操作,但没有成功。

timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(CallParseOperation) userInfo:nil repeats:YES]; 

检查操作

-(void)CheckOperation{

    if([Data getInstance].kOperation == TRUE)
    {
        [self CallParseOperation];
    }

}

CallParseOperation

-(void)CallParseOperation{


    [Data getInstance].kOperation = FALSE;
    operationQueue=[[NSOperationQueue alloc] init];
    ParseOperation *obj=[[ParseOperation alloc] initWithMembers:ID];
    NSInvocationOperation *reloadOp = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(tableReload) object:nil];
    [reloadOp addDependency:obj];
    [operationQueue addOperation:obj];
    [operationQueue addOperation:reloadOp];
    //[operationQueue waitUntilAllOperationsAreFinished];
    [obj release];
    [reloadOp release];

} 

在这个实现结束的某个地方,我将这个bool 设置为TRUE。但这行不通。控件只是卡在此计时器内。

【问题讨论】:

    标签: iphone nstimer


    【解决方案1】:

    在调用CallParseOperation 方法之前,您应该将kOperation 设置为FALSE,否则它将始终为真并且每次都会运行。

    不要将计时器设置为重复,而是将其设置为触发一次,然后在解析结束时再次将其关闭。这样,它会在处理后每 x 秒运行一次,而不是每 x 秒运行一次,无论它是否完成了前一个进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-07
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2011-10-18
      • 2017-11-13
      相关资源
      最近更新 更多