iphone: executeSelector: withObject: afterDelay: не работает с фоновым потоком?

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

- (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];
}

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

спасибо

7
задан subzero 31 August 2010 в 23:11
поделиться

1 ответ

Для работы PerformSelector:withObject:afterDelay: у вас должен быть работающий цикл выполнения.


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

Добавить:

[[NSRunLoop currentRunLoop] run];

В конец первого.

9
ответ дан 7 December 2019 в 03:09
поделиться