在单独的iOS线程上执行延迟执行

时间:2012-07-24 06:13:50

标签: iphone ios multithreading

在我的应用程序中,我需要处理数据数组并仅在互联网连接可用时将其发送到服务器。我需要在单独的线程上执行此任务,以便不会中断Application的正常执行。

我创建了一个名为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,但不起作用。

1 个答案:

答案 0 :(得分: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];
    });