如何将 Objective-C 指针数组转换为 Swift?
How do I convert Objective-C array of pointers to Swift?
在Objective-C
中有两个指针数组的声明:
NSArray<MTKMesh *> *mtkMeshes;
NSArray<MDLMesh *> *mdlMeshes;
我正在努力声明 Swift 3.0
中的等价物。
MTKMesh
和 MDLMesh
是 类(引用类型)。一个变量
Swift 中的 MTKMesh
类型是对对象实例的引用,
即 MTKMesh *
类型的变量在 Objective-C.
中是什么
因此您可以简单地声明
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)。
在Objective-C
中有两个指针数组的声明:
NSArray<MTKMesh *> *mtkMeshes;
NSArray<MDLMesh *> *mdlMeshes;
我正在努力声明 Swift 3.0
中的等价物。
MTKMesh
和 MDLMesh
是 类(引用类型)。一个变量
Swift 中的 MTKMesh
类型是对对象实例的引用,
即 MTKMesh *
类型的变量在 Objective-C.
因此您可以简单地声明
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)。