我所拥有的是
- (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
。我试过了,但我根本没有看到任何区别。