jubilee

Programing, Books and more...

指定時間後に処理を行う

NSTimerを使用して、指定時間後に処理を実行させる方法。
サンプルは、ボタンをタップしたら1秒後に処理を実行するサンプル。

ViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- (IBAction)adjustButton:(UIButton *)sender {
    // タイマー処理に引継ぐデータを格納
    NSDictionary *userInfo = @{@"duration":_durationField.text,
                               @"delay":_delayField.text};

    // タイマー設定
    [NSTimer scheduledTimerWithTimeInterval:1.0                     // 1秒後
                                     target:self                    // 呼び出すメソッドのインスタンス
                                   selector:@selector(doTimer:)     // 呼び出すメソッド
                                   userInfo:userInfo                // 引き渡すデータ
                                    repeats:NO];                    // 繰り返し
}

/// タイマー処理(この形式であること)
- (void)doTimer:(NSTimer *)timer
{
    // データの取り出し
    float duration = [(timer.userInfo)[@"duration"]floatValue];
    float delay = [(timer.userInfo)[@"delay"]floatValue];

    // やりたい処理
    [self goalAnimationWithDuration:duration andDelay:delay];
}