2012-06-24 70 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

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

相關問題