SCNVector3 组件的类型是什么? CGFloat 还是浮动?
What is the type of SCNVector3 components? CGFloat or Float?
苹果文档给出了SCNVector3的声明:
typedef struct SCNVector3 { CGFloat x, y , z; } SCNVector3;
或者在尝试编写重载函数时:
func * (left: SCNVector3, right: CGFloat) -> SCNVector3 {
return SCNVector3Make(left.x * right, left.y * right, left.z * right)
}
我收到 "cannot invoke '' with an argument list of type" 错误。 left.x、left.y 和 left.z 不应该是 CGfloat 吗?
如何以及何时决定 CGFloat 是双精度型还是浮点型?
在iOS 8.1 SDK header中,SCNVectorX
类型是基于Float
的,可以看出
通过命令单击 SCNVector3
:
struct SCNVector3 {
var x: Float
var y: Float
var z: Float
}
func SCNVector3Make(x: Float, y: Float, z: Float) -> SCNVector3
这与使用 CGFloat
的 OS X 10.10 SDK 不同。所以文档
似乎是错误的。以下在 iOS 项目中编译:
func * (left: SCNVector3, right: Float) -> SCNVector3 {
return SCNVector3Make(left.x * right, left.y * right, left.z * right)
}
苹果文档给出了SCNVector3的声明:
typedef struct SCNVector3 { CGFloat x, y , z; } SCNVector3;
或者在尝试编写重载函数时:
func * (left: SCNVector3, right: CGFloat) -> SCNVector3 {
return SCNVector3Make(left.x * right, left.y * right, left.z * right)
}
我收到 "cannot invoke '' with an argument list of type" 错误。 left.x、left.y 和 left.z 不应该是 CGfloat 吗?
如何以及何时决定 CGFloat 是双精度型还是浮点型?
在iOS 8.1 SDK header中,SCNVectorX
类型是基于Float
的,可以看出
通过命令单击 SCNVector3
:
struct SCNVector3 {
var x: Float
var y: Float
var z: Float
}
func SCNVector3Make(x: Float, y: Float, z: Float) -> SCNVector3
这与使用 CGFloat
的 OS X 10.10 SDK 不同。所以文档
似乎是错误的。以下在 iOS 项目中编译:
func * (left: SCNVector3, right: Float) -> SCNVector3 {
return SCNVector3Make(left.x * right, left.y * right, left.z * right)
}