通过不起作用的包装器方法创建具有不同间隔的NSTimer

时间:2010-11-04 19:47:03

标签: iphone objective-c ipad types nstimer

我正在尝试使用包装器方法创建NSTimer,以便我可以使其无效并将其替换为具有不同间隔的新NSTimer。这是我的代码:

- (void) createTimerWithInterval:(float *)interval{

    self.timer = [NSTimer scheduledTimerWithTimeInterval:[[NSNumber numberWithFloat: interval]floatValue] target:self selector:@selector(scrollWrapperForTimer) userInfo:nil repeats:YES];
}

我从编译器得到以下结果。为什么?

  

'numberWithFloat'的参数1的不兼容类型。

3 个答案:

答案 0 :(得分:4)

你应该按值传递间隔,而不是参考:

- (void) createTimerWithInterval:(float)interval{

但是你的代码也可以简化:

- (void) createTimerWithInterval:(float)interval{

    self.timer = [NSTimer scheduledTimerWithTimeInterval:interval
                                                  target:self
                                                selector:@selector(scrollWrapperForTimer)
                                                userInfo:nil
                                                 repeats:YES];
}

不要苛刻,但是你的代码很尴尬,足以表明你错过了Objective-C中某个概念。你应该明白它是什么并把它捡起来。

答案 1 :(得分:2)

numberWithFloat:接受一个浮点参数,但是你传给它一个浮点数的指针。

您可以将* interval传递给numberWithFloat:传递float的值而不是指向值的指针。

答案 2 :(得分:2)

您确定要将指针传递给浮点数吗?