我正在尝试使用包装器方法创建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的不兼容类型。
答案 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)
您确定要将指针传递给浮点数吗?