Ron*_*mer 2 xcode objective-c cgfloat ios xcode7
我有以下代码:
@property (nonatomic, assign) CGFloat floatValue;
Run Code Online (Sandbox Code Playgroud)
-
if (floatValue)
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
自Xcode 7 - 编译器错误发生:
隐式转换将浮点数转换为整数:'CGFloat'变为'bool'
任何人都可以解释什么是/建议代码编辑来纠正
这取决于如何实现从CGFloat到Bool的演员表.这可能取决于Objective-C的实现,甚至取决于实际处理器对IEEE浮点规范的实现.
无论哪种方式,你绝对不应该依赖它.特别是因为浮子不能保证准确.你可能会得到令人难以置信的接近0的东西,但if语句会失败.
您应该根据您要查找的值显式测试浮点数,如下所示:
if (floatValue != 0.0f)
{
//we know exactly what will happen
}
Run Code Online (Sandbox Code Playgroud)
在Swift中,编译器甚至不会让你做这样的事情,因为它试图让你安全:
if (floatValue)
{
//might happen, might not. who knows
}
Run Code Online (Sandbox Code Playgroud)
在Swift中,if (variable)如果variable是Bool类型,则只能使用语法.
Objective-C编译器不会强迫您进入此行为,但如果您希望代码以可预测的方式运行并且可移植,则应遵守它.
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |