2012年4月21日土曜日

NSTimerの使い方

NSTimer その名の通りタイマーを管理するオブジェクトです。

ViewController.h
@interface ViewController : UIViewController
{
    NSTimer *aTimer;
}

ViewController.m
// 画面生成時
- (void)viewDidLoad
{
    // タイマーを生成しスタート
    aTimer = [NSTimer
                 scheduledTimerWithTimeInterval:5.f
                 target:self
                 selector:(tick:)
                 userInfo:nil
                 repeat:YES];
}

// 画面破棄時
- (void)viewDidLoad {
    // タイマーを破棄
    [aTimer release];
    aTimer = nil;
}

// タイマーが動作した時の処理
- (void)tick:(NSTimer *)timer
{
    ...
}

// 基本的な使い方は上の通り
// 下はこんな使い方もってかんじ

// 画面表示時
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // タイマーが動いているか判定し、停止している場合は再開する
    if (![aTimer isValid])
        [aTimer fire];
}

// 画面終了時
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDisappear:animated];

    [aTimer invalidate];
}

こんなかんじですかね。
viewDidDisapper とかでタイマーとめておかないと次のビューに遷移したあともタイマーが動き続ける可能性があります。
また画面に戻ってきたときは今度は viewWillAppear が反応するんでそこでタイマーを再開するというかんじです。
(viewの各メソッドは、ViewController作成時に最初からある各メソッド で簡単に載せてます)



0 件のコメント:

コメントを投稿