Я использую приведенный ниже код, где в методе startThread
, если я использую метод detachNewThreadSelector
, он блокирует мой пользовательский интерфейс, но когда я использую его для создания объекта из NSThread и вызова метода start
, и в этом я вызвал run
Метод, который не блокирует мой пользовательский интерфейс.
То, что я не получаю, будет detachNewThreadSelector
работать в фоновом режиме, поэтому он не должен блокировать мой пользовательский интерфейс. Тогда почему так в моем случае?
и чтоэто с start
метод и NSThread
объект?будет ли он работать в фоновом режиме или в основном потоке?
У меня есть поиск по таким статьям и вопросам StackOverFlow, но я не понимаю, в каком сенарио эти тренировки по темам
-(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;
}