2010-01-29 2 views
3

Я пытаюсь настроить NSTimer на делегат - я так новичок в объектно-c, так извиняюсь, если это не имеет большого смысла. Но то, что я написал, это:NSTimer с методом делегирования

animationTimer = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)((1.0/60.0) * animationFrameInterval) target:self.delegate selector:@selector(drawView) userInfo:nil repeats:TRUE]; 

К сожалению, это просто не работает. Может ли кто-нибудь указать мне в правильном направлении? Мой ум пожарил !!

+0

К сожалению ошибки я получаю в отчете об аварии заключается в следующем: [mugalugAppDelegate drawView]: непризнанный селектор направил к экземпляру Это означает, что не может найти правильный метод? – FlimFlam

ответ

3

У вас все в порядке.

Просто добавьте двоеточие в имени метода, то есть @selector (drawView :). Кроме того, по соглашению с объектно-c-кодировщиками используйте YES и NO.

+0

Ahh большое спасибо - сработал угощение !! – FlimFlam

4

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

Смежные вопросы