假设我有一个函数:
- (void) doSomethingWithFloat:(float)aFloat;
我用 double 浮点值调用该函数,如下所示:
[self doSomethingWithFloat:12.0];
从 12.0( double )到 12.0f(单精度)的转换是在编译时或运行时完成还是两者都不完成?
只是为了清楚起见:我不是在问单精度和 double 之间的区别 精度 float 。
最佳答案
ObjectiveC 实际上遵循大多数 C 约定 - 因此当传递给函数时,根据 C 规范, float 会提升为 double 。 ObjectiveC 编译器最终将所有方法转换为函数,因此您的 double 可以工作。
也就是说,最好打开编译器警告并传递 CGFloats 或 float - 它只是让您知道何时失去精度。
关于objective-c - 在 iOS 上,当您将 double 传递给需要 [single] float 作为参数的方法时,实际发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514087/