传递float给出了垃圾值

时间:2011-08-30 20:39:24

标签: iphone objective-c ios

我只是尝试在obj-c中传递一个float参数来解决一些非常奇怪的问题。

我有一个通过NSNotification调用的方法:

    - (void)presetChanged:(NSNotification*)notification {

float newValue = [[S76PresetManager sharedManager] getValueForKey:symbol];

[self setValue:newValue animated:YES];
[PdBase sendFloat:newValue toReceiver:symbol];
}

当我通过调试器运行时,浮点数(比如0.5)将保持不变并被发送到[PdBase sendFloat:]行。但是,在[self setValue:animated:]调用中,我得到的垃圾值为3.68934881e + 19。这很奇怪。有什么建议吗?

提前致谢

编辑:在[self setValue:animated:]中没有发生任何特殊情况,只是在将其发送到另一个方法之前进行一些边界检查......

    - (void)setValue:(float)newValue animated:(BOOL)animated {
float oldValue = value;

if (newValue < 0.0)
    value = 0.0;
else if (newValue > maxValue)
    value = maxValue;
else
    value = newValue;

[self valueDidChangeFrom:oldValue to:value animated:animated];
    }

1 个答案:

答案 0 :(得分:1)

假设你在[self setValue:newValue animated:YES]中没有做任何奇怪的事......

怎么样:

NSNumber *newValue = [NSNumber numberWithFloat:[[S76PresetManager sharedManager] getValueForKey:symbol]];

[self setValue:newValue animated:YES];
[PdBase sendFloat:[newValue floatValue] toReceiver:symbol];