如何在iOS 5中启动可停止的计算任务?

时间:2012-06-24 13:26:27

标签: ios background progress-bar

我想开始计算任务,该任务将持续几分钟。由于解决方案越来越接近最佳解决方案,我想给用户一个按钮,以便停止计算,并坚持使用近似值。

但是当我在viewDidLoad中开始计算时,在计算结束之前,甚至没有向用户显示带有停止按钮的视图。所以我需要某种后台计算过程 - 但我怎么能在iOS 5上这样做呢?

我还希望能够在我的视图中更新进度条(使用停止按钮)。

这是我在UIViewController子类中的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // doing some initialization

    [self startCalculation]; // do this in background for stopping capabilities?
}

- (void)startCalculation {
    // start calculation and update progress bar every 200 ms or so
}

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

一般答案是从startCalculation

中拨打NSThread
//thread is a property in your corrent class
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(startCalculation) object:nil];

然后停止它

//when you want to stop the thread
[thread cancel];

如果要从此线程中更新进度视图,请确保从ui主线程调用进度更新,如此

//in your calculation function, when you want to update the progressview
- (void)startGenerationProcess {
    //Calculations

    //update progress
    dispatch_async(dispatch_get_main_queue(), ^{
          //Update progress
    });

    //More Calculations
}

答案 1 :(得分:0)

查看NSThread课程或NSOperation的文档。