Objective c SceneKit:相当于目标C中的SCInvector3(0,0,0)
Swift中此代码的等效项:Objective c SceneKit:相当于目标C中的SCInvector3(0,0,0),objective-c,swift,scenekit,Objective C,Swift,Scenekit,Swift中此代码的等效项: startNode.scale = SCNVector3(1/100.0, 1/100.0, 1/100.0) 是: 在目标C中 似乎很奇怪,scinvector3应该被scinvector3make取代。为什么会这样 谢谢 您可以在Swift中使用SCInvector3Make(x,y,z)和SCInvector3(x,y,z) 后者在语义上确实很奇怪,但它们是完全相同的,你可以在Swift中使用SCInvector3Make(x,y,z)和SCInvector
startNode.scale = SCNVector3(1/100.0, 1/100.0, 1/100.0)
是:
在目标C中
似乎很奇怪,scinvector3
应该被scinvector3make
取代。为什么会这样
谢谢 您可以在Swift中使用
SCInvector3Make(x,y,z)
和SCInvector3(x,y,z)
后者在语义上确实很奇怪,但它们是完全相同的,你可以在Swift中使用
SCInvector3Make(x,y,z)
和SCInvector3(x,y,z)
后者在语义上确实很奇怪,但它们是相同的,两者都是相同的,只是名称不同,这都是因为Apple C/ObjC框架和Swift代码中的命名约定不同
最好在示例中演示它是如何工作的: 假设我们正在创建框架
SomeFramework
(SF
将是名称空间前缀),在所述框架中,我们将有类型Example
,前缀为SFExample
C的命名约定是,应该调用类型SFExample
的构造函数SFExampleMake
Swift的命名约定是构造函数应该是SFExample.init
,可以称为SFExample(…)
当你在Swift项目中导入ObjC/C框架时,幕后会有一个名称转换,将
SFExampleMake
转换为SFExample.init
或scinvector3make
转换为scinvector3.init
两者都是相同的,只有名称不同,这都是因为Apple C/ObjC框架和Swift代码中的命名约定不同
最好在示例中演示它是如何工作的: 假设我们正在创建框架
SomeFramework
(SF
将是名称空间前缀),在所述框架中,我们将有类型Example
,前缀为SFExample
C的命名约定是,应该调用类型SFExample
的构造函数SFExampleMake
Swift的命名约定是构造函数应该是SFExample.init
,可以称为SFExample(…)
当你在你的Swift项目中导入ObjC/C框架时,会有一个幕后的名称转换,将
SFExampleMake
转换为SFExample.init
或SCInvector3Make
转换为SCInvector3.init
所以SCInvector3和SCInvector3Make在Swift中是严格等价的?所以SCInvector3和SCInvector3Make是等价的在Swift中严格等效?为什么奇怪?它遵循C函数API到Swift API之间转换的所有命名标准。@user28434检查CGPoint
或CGRect
的初始值设定项;它们都有外部参数名,而不像scinvector3(x,y,z)
。尽管如此,scinvector3
也为Float
提供了带有参数名的Swift初始值设定项。但我认为OP想知道为什么在目标C中,scinvector3
是scinvector3make
,而不是为什么没有参数名。为什么奇怪?它遵循C函数API到Swift API之间转换的所有命名标准。@user28434检查CGPoint
或CGRect
的初始值设定项;它们都有外部参数名,而不像scinvector3(x,y,z)
。尽管如此,scinvector3
也为Float
提供了带有参数名的Swift初始值设定项。但是我想OP想知道为什么在目标C中,scinvector3
是scinvector3make
,而不是为什么没有参数名。
[startNode setScale: SCNVector3Make(1/100.0, 1/100.0, 1/100.0)];