什么是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头文件中, SCNVectorXtypes基于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) }