Скорее всего, подпись метода для 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
, что заставит пользовательский интерфейс сказать вашему NSView перерисовать себя, вызвав drawRect:
вашего NSView. Я упоминаю об этом только потому, что вы сказали, что вы новичок в Objective-C, так что вы можете не знать об этом и в итоге написать больше кода, чем нужно. Если вы будете следовать этой схеме, вы можете периодически вызывать свой таймер setNeedsDisplay
.