我有一个类,其中的属性是类本身。
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
,然后拥有一些集合(例如,一个集合,或者一个数组或字典),这些集合维护对双链接列表中所有实例的强引用。