這個代碼在夫特等效SCNVector3的當量:SceneKit:(,0 0,0)的目標C
startNode.scale = SCNVector3(1/100.0, 1/100.0, 1/100.0)
是:
[startNode setScale: SCNVector3Make(1/100.0, 1/100.0, 1/100.0)];
在Objective-C
。
SCNVector3
應該被替換爲SCNVector3Make
似乎很奇怪。爲什麼是這樣?
謝謝!
這個代碼在夫特等效SCNVector3的當量:SceneKit:(,0 0,0)的目標C
startNode.scale = SCNVector3(1/100.0, 1/100.0, 1/100.0)
是:
[startNode setScale: SCNVector3Make(1/100.0, 1/100.0, 1/100.0)];
在Objective-C
。
SCNVector3
應該被替換爲SCNVector3Make
似乎很奇怪。爲什麼是這樣?
謝謝!
您可以在Swift中使用SCNVector3Make(x, y, z)
和SCNVector3(x, y, z)
。
後來的確在語義上很奇怪,但他們是相同的。
兩者都是一樣的,只是名稱不同而且都是因爲Apple C/ObjC框架和Swift代碼中的命名規則不同。
這將是更好地展示它是如何工作的例子:
假設我們正在創建框架SomeFramework
(SF
會再命名空間前綴),並在上述框架內,我們將有類型Example
,前綴這將是SFExample
。
C的命名約定表示我們類型爲SFExample
的構造函數應該被稱爲SFExampleMake
。
Swift的命名規則是說構造函數應該是SFExample.init
,它可以被稱爲SFExample(…)
。
而當你在你的斯威夫特項目中導入ObjC/C框架還有的namecast,輪流SFExampleMake
到SFExample.init
或SCNVector3Make
到SCNVector3.init
幕後。
那麼SCNVector3和SCNVector3Make在Swift中嚴格等價嗎? –