iphone: executeSelector: withObject: afterDelay: не работает с фоновым потоком? - PullRequest
7 голосов
/ 01 сентября 2010

Я хочу запустить метод в фоновом потоке, первый метод через несколько секунд запустит другой метод в том же (фоновом) потоке.Я написал это:

- (IBAction)lauch:(id)sender
{
    [self performSelectorInBackground:@selector(first) withObject:nil];

}
-(void) second {
    printf("second\n");
}
-(void) first {
    NSAutoreleasePool *apool = [[NSAutoreleasePool alloc] init];
    printf("first\n");

    [self performSelector:@selector(second) withObject:nil afterDelay:3];

    printf("ok\n");
    [apool release];
}

но второй метод никогда не вызывается, почему?и как я могу достичь своей цели?

спасибо

1 Ответ

9 голосов
/ 01 сентября 2010

У вас должен быть запущенный цикл выполнения для выполнения executeSelector: withObject: afterDelay:

<Ч />

Ваш код выполняет first, и когда first выходит, поток пропадает. Вам нужно запустить цикл выполнения.

Добавить:

[[NSRunLoop currentRunLoop] run];

К концу first.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...