Как в Cocoa-приложении выполнить заданный код через N секунд

Способ 1:

    NSLog(@"Старт");
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC)
        , dispatch_get_main_queue(), ^{
            NSLog(@"Прошло 5 секунд");
        });
    NSLog(@"Далее");


Результат исполнения:

2015-03-14 02:00:05.637 CocoaApplication[11271:303] Старт
2015-03-14 02:00:05.638 CocoaApplication[11271:303] Далее
2015-03-14 02:00:10.639 CocoaApplication[11271:303] Прошло 5 секунд


Способ 2:

- (void)test
{
    NSLog(@"Старт");
    SEL thePrintStringMethod = @selector(printString:);
    [self performSelector:thePrintStringMethod withObject:@"Прошло 5 секунд"
               afterDelay:5];
    NSLog(@"Далее");

}

- (void)printString:(NSString *)aString
{
    NSLog(@"%@", aString);
}

Результат выполнения будет аналогичным.


См. также: