一定時間後に処理を実行する - iOS開発メモ

サンプル

dispatch_afterを使うと指定時間経過後に処理を実行することができます。

- (void)foo
{
    NSLog(@"begin %s", __func__);
    // 5秒後にbarを実行する
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC));
    dispatch_after(time, dispatch_get_main_queue(), ^(void) {
        [self bar];
    });
    NSLog(@"end %s", __func__);
}

- (void)bar
{
    NSLog(@"called %s", __func__);
}

performSelector:withObject:afterDelay:を使う方法もありますが、こちらの場合実行するメソッドの引数の数に制限があります。

- (void)foo
{
    NSLog(@"begin %s", __func__);
    // 5秒後にbarを実行する
    [self performSelector:@selector(bar) withObject:nil afterDelay:5.0];
    NSLog(@"end %s", __func__);
}

- (void)bar
{
    NSLog(@"called %s", __func__);
}

関連項目