Что означает использование комбинации detachNewThreadSelector: toTarget: withObject и [NSThread Start] - PullRequest
1 голос
/ 29 декабря 2011

Я использую приведенный ниже код, где в методе 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;

}
...