私が持っているのは
- (void)startTheBackgroundJob {
1.NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
2.[NSThread sleepForTimeInterval:3];
3.[self performSelectorOnMainThread:@selector(makeMyProgressBarMoving) withObject:nil waitUntilDone:YES];
4.//[self makeMyProgressBarMoving];
5.[pool release];
}
- (void)makeMyProgressBarMoving {
float actual = [threadProgressView progress];
threadValueLabel.text = [NSString stringWithFormat:@"%.2f", actual];
if (actual < 1) {
threadProgressView.progress = actual + 0.01;
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(makeMyProgressBarMoving) userInfo:nil repeats:NO];
}
else threadStartButton.hidden = NO;
}
starTheBackgroundJob の 4 行目で、waitUntilDone = YES
(または NO) の値を設定できます。
リファレンスを読んだところ、次のことが示されています。
待って
指定されたセレクターがメイン スレッドのレシーバーで実行されるまで、現在のスレッドをブロックするかどうかを指定するブール値。このスレッドをブロックするには YES を指定します。それ以外の場合は、NO を指定して、このメソッドがすぐに戻るようにします。現在のスレッドがメイン スレッドでもあり、このパラメーターに YES を指定すると、メッセージはすぐに配信されて処理されます。
私の質問は:
- ここで指定されたセレクターは何ですか (この例で)?
- 質問はさておき。を設定するとどうなりますか
waitUntilDone = YES
。試してみましたが、まったく違いがわかりませんでした。