我有一个类,其中的属性是类本身。

class Voxel {
     var vertices : [Vertex] = []
     var above : Voxel?
     var below : Voxel?
     var front : Voxel?
     var back  : Voxel?
     var left  : Voxel?
     var right : Voxel?
}

它在双3D链表中充当一个节点,但问题是,在C和C++中,我必须将邻居存储为指针(我也想对顶点数组也这样做)。
这是用斯威夫特自动为我做的吗?
我看不到将顶点数组作为指针数组保存的好方法,我当然也不想保存实际值,因为我将有数千个体素。

最佳答案

因为Voxel是引用类型,所以它们是指针。如果它是一个class,它将是一个值类型,因此每个新引用都将是一个新副本。
顺便说一下,要小心强参考周期。确保一个实例的隐式struct引用strong不是另一个其below是另一个above引用的实例。要解决这个问题,您需要创建所有这些引用strong,然后拥有一些集合(例如,一个集合,或者一个数组或字典),这些集合维护对双链接列表中所有实例的强引用。

08-29 01:13