2012-07-24 2 views
0

제 애플리케이션에서 데이터 배열을 처리하고 인터넷 연결이 가능한 경우에만 서버로 전송해야합니다. 별도의 스레드에서이 작업을 수행해야 응용 프로그램의 정상적인 실행이 중단되지 않습니다.별도의 iOS 스레드에서 지연 실행

ProcessQueue이라는 클래스를 만들어서 배열을 반복하고 서버로 보냅니다.

이 작업은 ApplicationDidBecomeActive 이벤트에서 몇 초 정도 지연되지만 별도의 스레드에서 수행해야합니다.

다음과 같이 시도했지만 선택기가 호출되지 않습니다. (ProcessQueue 클래스 내에서 중단 점을 설정하려고합니다.)

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    [self performSelector:@selector(processTheQueue) withObject:nil afterDelay:5]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 

    }); 
}); 


- (void) processTheQueue 
{ 

    QueueProcessor *process = [[QueueProcessor alloc] init]; 
    [process processQueue]; 

} 

나는 또한 [process processQueue]' method instead of dispatch_async` 내부 performSelector를 사용하여 시도했지만 작동하지 않습니다.

+0

누구? – tGilani

답변

1

이 시도 .. 도움이 될 수

double delayInSeconds = 2.0; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     // code to be executed on main thread.If you want to run in another thread, create other queue 
     [self repeateThreadForSpecificInterval]; 
    }); 
관련 문제