SCNVector3和SCNVector3Make之间的主要区别是什么

Tak*_*sur 3 vector ios scenekit swift

我阅读了Apple关于这两个课程的文档,但我不确定何时何时不使用哪一个?由于SCNVector3的构造函数也接受相同的参数并返回相同的东西,因此混淆了一个名为SCNVector3Make的方法

rma*_*ddy 6

SCNVector3Make 是一个便利功能,它不是一个类.

SCNVector3是一个struct,而不是一个class.

如果您的x,y和z值是,则可以正常工作Float.

let vector = SCNVector3(x, y, z)
Run Code Online (Sandbox Code Playgroud)

要么:

let vector = SCNVectorMake(x, y, z)
Run Code Online (Sandbox Code Playgroud)

两者都为您SCNVector3初始化了3个Float值.

如果你的价值观是其他类型(Int,Double,CGFloat),使用相关的SCNVector3初始化,因为SCNVector3Make只有工作Float.

  • 对.历史/跨语言透视:在(Obj)C中,结构传统上没有像类那样的初始化器,因此提供Make函数是为了方便创建和填充结构.(是的,更新的C编译器添加了struct initializer语法.但这看起来很奇怪.其中许多函数都是在此之前创建的.)在Swift中,struct自动获得一个成员初始化器,而Apple定义了一些其他初始化器以方便传入其他值类型.Make函数就像任何C函数一样导入Swift,但它有点像残余. (3认同)