什么是SCNVector3组件的types? CGFloat或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) }
我得到“无法调用”与types“错误的参数列表”。 是不是left.x,left.y和left.z应该是CGfloat?
如何以及何时决定CGFloat是双重还是浮动?
在iOS 8.1 SDK头文件中, SCNVectorX
types基于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) }