2012-02-09 12 views
0

私はNSTimerで3秒ごとにサービスメソッドを呼び出しています。しかし、そのメソッドが呼び出されるたびに、前のタイマーが完了しているかどうかをチェックしたい。私は成功していない次のことをしています。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に設定する必要があります。そうしないと、常にtrueとなり、毎回実行されます。

タイマーを繰り返し設定する代わりに、一度起動するように設定し、解析の最後にもう一度オフに設定します。これにより、前の処理が終了したかどうかにかかわらず、x秒ごとではなく、処理後にx秒ごとに実行されます。

関連する問題