プレーヤーがゲームに入るとタイマーが 60 から 0 まで始まるように、単純なカウントダウン タイマーを作成しようとしています。
これまでのところ、GameController.m 内に次のようなメソッドを作成しました。
-(int)countDownTimer:(NSTimer *)timer {
[NSTimer scheduledTimerWithTimeInterval:-1
invocation:NULL
repeats:YES];
reduceCountdown = -1;
int countdown = [[timer userInfo] reduceCountdown];
if (countdown <= 0) {
[timer invalidate];
}
return time;
}
ゲームの開始時に、整数の Time を 60 に初期化します。その後、ViewController 内でラベルが設定されます。しかし、コードをコンパイルすると、ラベルが 60 に表示されるだけで、まったく減少しません。
どんな助けでも大歓迎です-私はObjective-Cが初めてです。
編集
の助けを借りて、コードを 2 つの別々のメソッドに分割しました。コードは次のようになります。
-(void)countDown:(NSTimer *)timer {
if (--time == 0) {
[timer invalidate];
NSLog(@"It's working!!!");
}
}
-(void)countDownTimer:(NSTimer *)timer {
NSLog(@"Hello");
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(countDown:)
userInfo:nil
repeats:YES];
}
ただし、コードはまだ正しく実行されておらず、View Controller からメソッド [game countDownTimer] を呼び出すと、「認識されないセレクターがインスタンスに送信されました」と言って中断します。ここで何が間違っているのか誰か説明できますか?