-2

重複の可能性:
Objective Cのメソッドを定期的に呼び出す方法は?

ユーザーが画面に触れると、次のメソッドが呼び出されるアプリを作成しています。

- (void)explode:(int)x

ユーザーは画面を1回タッチするだけで済みますが、メソッドを0.1秒ごとに100回繰り返し呼び出して、呼び出さないようにする必要があります。

整数が渡されるメソッドにこのような「一時的な」タイマーを設定する方法はありますか?

4

1 に答える 1

2

カウンターと「x」をタイマーのuserInfoに渡すことができます。これを試して:

タッチイベントをキャッチするメソッドでタイマーを作成し、カウンターとint'x'をuserInfoに渡します。

NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] initWithCapacity:2];
[userInfo setValue:[NSNumber numberWithInt:x] forKey:@"x"];
[userInfo setValue:[NSNumber numberWithInt:0] forKey:@"counter"];

[NSTimer timerWithTimeInterval:0.1
                        target:self
                      selector:@selector(timerMethod:)
                      userInfo:userInfo
                       repeats:YES];

タイマーメソッドを作成し、userInfoの数を確認し、100回後にタイマーを無効にします。

- (void)timerMethod:(NSTimer *)timer
{
    NSMutableDictionary *userInfo = timer.UserInfo;
    int x = [[userInfo valueForKey:@"x"] intValue];

    // your code here

    int counter = [[userInfo valueForKey:@"counter"] intValue];
    counter++;

    if (counter >= 100)
    {
        [timer invalidate];
    }
    else
    {
        [userInfo setValue:[NSNumber numberWithInt:x] forKey:@"x"];
        [userInfo setValue:[NSNumber numberWithInt:counter] forKey:@"counter"];
    }

}

次のAppleドキュメントも参照してくださいNSTimer

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nstimer_Class/Reference/NSTimer.html

于 2012-09-08T19:49:09.173 に答える