1
1/16秒ごとに、毎回メソッドを呼び出すNSTimerが起動します。静的整数が '16'になると、メソッドが呼び出されるたびに '1'ずつ増加する静的整数を作成したいと思います。別のメソッドを呼び出し、静的整数を '0'にリセットします。スタティックカウンタはNSTimerによって繰り返しインクリメントされる
洞察力があれば幸いです。
1/16秒ごとに、毎回メソッドを呼び出すNSTimerが起動します。静的整数が '16'になると、メソッドが呼び出されるたびに '1'ずつ増加する静的整数を作成したいと思います。別のメソッドを呼び出し、静的整数を '0'にリセットします。スタティックカウンタはNSTimerによって繰り返しインクリメントされる
洞察力があれば幸いです。
(言語が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
...静的なint型として宣言し、私は彼がこれを達成しませんこれは、毎秒を変更する方法を必要だと思います。 2番目のパラメータとして関数ポインタ(obj Cにそれらがある場合)を渡して、それを呼び出すことができます。 – jkeys
@それは不可能です。タイマーが作成されると、どのセレクターを起動するかを変更することはできません。ですから、簡単な解決策は、fireメソッドにif()文を入れ、そこから分岐することです。 –
@Hookedとセレクタを2番目のパラメータとして渡すことについては、どちらもできません。 NSTimerのファイヤーメソッドは、非常に特殊なシグニチャー(return void、単一のNSTimer *パラメーター)を持たなければなりません。 –