2009-07-14 14 views

答えて

6

(言語がobj-Cである)ので、

static int myCounter; 
@implementation SomeClass 

- (id) init { 
    if (self = [super init]) { 
    myCounter = 0; 
    NSTimer * someTimer = [NSTimer scheduledTimerWithTimeInterval:(1/16) target:self selector:@selector(fireTimer:) userInfo:nil repeats:YES]; 
    } 
    return self; 
} 

- (void) fireTimer:(NSTimer *)aTimer { 
    myCounter++; 
    if (myCounter == 16) { 
    [self doSomeMethod]; 
    myCounter = 0; 
    } 
} 

@end 
+0

...静的なint型として宣言し、私は彼がこれを達成しませんこれは、毎秒を変更する方法を必要だと思います。 2番目のパラメータとして関数ポインタ(obj Cにそれらがある場合)を渡して、それを呼び出すことができます。 – jkeys

+0

@それは不可能です。タイマーが作成されると、どのセレクターを起動するかを変更することはできません。ですから、簡単な解決策は、fireメソッドにif()文を入れ、そこから分岐することです。 –

+0

@Hookedとセレクタを2番目のパラメータとして渡すことについては、どちらもできません。 NSTimerのファイヤーメソッドは、非常に特殊なシグニチャー(return void、単一のNSTimer *パラメーター)を持たなければなりません。 –

関連する問題