のメソッド シグネチャdrawView
が正しくない可能性があります。NSTimer クラス リファレンスから:
タイマーが起動したときにターゲットに送信するメッセージ。セレクターには次の署名が必要です。
- (void)timerFireMethod:(NSTimer*)theTimer
したがって、drawView
メソッドは次のようになります。
- (void)drawView:(NSTimer*)theTimer
{
// Draw the view
}
また、コードを次のように修正します (「drawView」に続くコロンに注意してください)。
animationTimer = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)((1.0 / 60.0) * animationFrameInterval) target:self.delegate selector:@selector(drawView:) userInfo:nil repeats:TRUE];
ちなみに、あなたdrawView
が何を担当しているのかわかりません(ビューを描いていると思います)。ただし、描画には組み込みのメカニズムがあり、従う必要があります (まれな状況を除く)。通常、NSView がある場合は を呼び出しますsetNeedsDisplay
。これにより、UI は NSView に NSView の を呼び出して自分自身を再描画するように指示しますdrawRect:
。あなたがObjective-Cに不慣れだと言ったので、これについてのみ言及します。そのため、これに気付かず、必要以上のコードを書くことになるかもしれません。この設計に従えば、setNeedsDisplay
定期的にタイマーを呼び出すことができます。