的NSTimer与委托方法
我试图建立一个NSTimer上的委托 - 我很很新的Objective-C的所以道歉,如果这没有多大意义。但我写的是:的NSTimer与委托方法
animationTimer = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)((1.0/60.0) * animationFrameInterval) target:self.delegate selector:@selector(drawView) userInfo:nil repeats:TRUE];
不幸的是,这只是行不通的。有人能指引我朝着正确的方向吗?我的心已经炸了!
你说得对。
只是在方法名,即@selector(drawView函数:)添加冒号。另外,按照惯例,Objective-C编码器使用YES和NO。
啊,非常感谢你 - 工作! – FlimFlam 2010-01-29 17:18:48
最有可能为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的drawRect:
告诉你的NSView重绘自己。我只提到这点,因为你说你是Objective-C的新手,所以你可能没有意识到这一点,并最终编写比你需要的更多的代码。如果您遵循此设计,您可以定期拨打setNeedsDisplay
。
对不起,我在崩溃报告得到的错误是这样的: [mugalugAppDelegate drawView函数]:无法识别的选择发送到实例 这意味着它不能找到方法吧? – FlimFlam 2010-01-29 16:30:42