我在方法startThread
中使用下面的代码,如果我使用detachNewThreadSelector
方法,它会阻止我的UI但是当我用来制作NSThread的对象并调用start
方法时我调用了run
方法,它没有阻止我的UI。
我没有得到的是detachNewThreadSelector
将在后台运行,所以它不应该阻止我的UI。那么为什么我的情况呢?
以及start
方法和NSThread
对象是什么?它会在后台或主线程中运行吗?
我搜索了很多文章和StackOverFlow问题,但没有得到哪个senario实际上这些Threads锻炼
-(void)startThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//NSThread *myThread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:nil];
//[myThread start];
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:nil];
[pool release];
}
-(void)run:(id)param
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
while (threadProgressView.progress < 1) {
[NSThread sleepForTimeInterval:0.25];
[self updateProgressBar];
//[NSThread detachNewThreadSelector:@selector(updateProgressBar) toTarget:self withObject:nil];
}
threadStartButton.hidden = NO;
[pool release];
}
-(void)updateProgressBar
{
NSLog(@"In update progress bar");
float actual = [threadProgressView progress];
threadValueLabel.text = [NSString stringWithFormat:@"%.2f",actual];
threadProgressView.progress = actual + 0.025;
}