我想开始计算任务,该任务将持续几分钟。由于解决方案越来越接近最佳解决方案,我想给用户一个按钮,以便停止计算,并坚持使用近似值。
但是当我在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
}
有人可以帮助我吗?
答案 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的文档。