Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c SceneKit:相当于目标C中的SCInvector3(0,0,0)_Objective C_Swift_Scenekit - Fatal编程技术网

Objective c SceneKit:相当于目标C中的SCInvector3(0,0,0)

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

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)
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)];