0

数分間続く計算タスクを開始したいと考えています。解は時間の経過とともに最適解に近づいているため、いつでも計算を停止して近似値に固執するためのボタンをユーザーに提供したいと考えています。

しかし、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
}

誰か助けてくれませんか?

4

2 に答える 2

1

一般的な答えはstartCalculationNSThread

//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
}
于 2012-06-24T13:32:39.050 に答える
0

NSThreadクラスまたはNSOperationのドキュメントを参照してください。

于 2012-06-24T13:33:09.020 に答える