0
在Objective-C
這些指針數組的兩個聲明:如何將指針的Objective-C數組轉換爲Swift?
NSArray<MTKMesh *> *mtkMeshes;
NSArray<MDLMesh *> *mdlMeshes;
我奮力聲明中Swift 3.0
相當。
在Objective-C
這些指針數組的兩個聲明:如何將指針的Objective-C數組轉換爲Swift?
NSArray<MTKMesh *> *mtkMeshes;
NSArray<MDLMesh *> *mdlMeshes;
我奮力聲明中Swift 3.0
相當。
MTKMesh
和MDLMesh
是類(參考類型)。 Swift中類型MTKMesh
的變量 是對對象實例 的引用,即在Objective-C中MTKMesh *
類型的變量是什麼。
因此可以簡單地聲明
var mtkMeshes: [MTKMesh] = []
var mdlMeshes: [MDLMesh] = []
該數組的每個元素是一個對象實例的引用:
let mesh1 = MDLMesh()
let mesh2 = MDLMesh()
mdlMeshes.append(mesh1)
mdlMeshes.append(mesh1)
mdlMeshes.append(mesh2)
print(mdlMeshes[0] === mdlMeshes[1]) // true
print(mdlMeshes[0] === mdlMeshes[2]) // false
前兩個陣列元件引用相同的對象實例,所述 最後數組元素引用一個不同的實例。 (是"identical-to" operator)。
謝謝馬丁。在你的Swift中,我注意到你已經預先分配了實際上與Obj-C不同的數組。對於上下文來說,這是代碼片段,它使用mdlMeshes作爲分配和填充該數組的函數的inout參數。 ''===「提示+1。 – dugla
@dugla:您還可以聲明'var mtkMeshes:[MDLMesh]?'並將其地址傳遞給函數func foo(meshes:inout [MDLMesh]?)',該函數分配並填充數組。 –