2012-06-24 55 views
0

我想开始一个计算任务将持续几分钟。由于解决方案越来越接近最佳解决方案与时间,我想给用户一个按钮,以停止在任何时间的计算和坚持与近似。如何在iOS 5中启动可停止的计算任务?

但是当我在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 
} 

可能有人请帮助我吗?

回答

1

一般的答案是内NSThread

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

调用startCalculation从此停止它

//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 
} 
+0

谢谢,我会尽力做到这一点。听起来很简单... :) – CGee

+0

你可能会遇到一些困难,但是它很容易:) –

相关问题