バックグラウンド スレッドでタスクを完了している iOS アプリがあります。各タスクが完了すると、メイン スレッドにメッセージを送信して、カスタム プログレス バーに沿って適切なステージに移動できるようにします。
これを達成するための最も簡単で安全な方法は何ですか?
編集1
これは私が使用している方法です:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
// get background tasks done.
[self.background backgroundMethod];
});
編集2
@Madboyの回答を使用して試行する例を次に示します。バックグラウンドでメソッドを実行するクラス内に、進行状況バーへのポインターがあります。これはうまくいくと思いますか?(EDIT 1 にも変更があることに注意してください)。
@implementation BackgroundClass
@synthesize delegate;
@synthesize customProgressBar
- (void)backgroundMethod
{
// Run tasks
}
- (void)delegateSaysBackgroundMethodIsFinished
{
[self performSelectorOnMainThread:@selector(tasksDone:) withObject:self.customProgressBar waitUntilDone:NO];
}
@implementation CustomProgressBar
- (void)tasksDone
{
// change UI to reflect progress done.
}