我只是尝试在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];
}
答案 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];