2012-02-09 42 views
0

我每3秒鐘呼叫一次NSTimer中的服務方法。但是,在每次調用該方法之前,我都要檢查定時器中的前一個是否完成。我做了以下事情,但沒有取得成功。檢查NSTimer選擇器是否已完成工作

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

CheckOperation

-(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]; 

} 

某處在這個實施結束我設置這個boolTRUE。但是這不起作用。控制只是卡在這個計時器內。

回答

2

在調用方法CallParseOperation之前,您應該將kOperation設置爲FALSE,否則它將始終爲真,並且每次都會運行。

而不是將您的計時器設置爲重複,將其設置爲觸發一次,然後在解析結束時重新設置它。這樣它將在處理後每隔x秒運行一次,而不是每隔x秒運行一次,而不管它是否完成了前一個過程。