Swift类中的属性是否自动引用?

Swift类中的属性是否自动引用?,swift,reference,Swift,Reference,我有一个类,其中属性是类本身 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++中,我必须将邻居存储为指针(我也

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

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++中,我必须将邻居存储为指针(我也想对顶点数组做这个)。p> 这是用Swift自动为我完成的吗


我看不到一种将顶点数组作为指针数组保存的好方法,我当然不想保存实际值,因为我将有数千个体素。

类(相对于结构)的定义特征是它们是引用类型,并使用引用语义(即,对象的赋值仅复制对该对象的引用)

类是引用类型

与值类型不同,引用类型在分配给变量或常量或传递给函数时不会被复制。而是使用对同一现有实例的引用,而不是复制

另一方面,结构是值类型,使用值语义(即结构的赋值完全复制它)

结构和枚举是值类型

值类型是一种类型,其值在赋值给变量或常量或传递给函数时被复制


我建议您对此进行阅读:

类(相对于结构)的定义特征是它们是引用类型,并使用引用语义(即,对象的赋值仅复制对对象的引用)

类是引用类型

与值类型不同,引用类型在分配给变量或常量或传递给函数时不会被复制。而是使用对同一现有实例的引用,而不是复制

另一方面,结构是值类型,使用值语义(即结构的赋值完全复制它)

结构和枚举是值类型

值类型是一种类型,其值在赋值给变量或常量或传递给函数时被复制


我建议你读一下:

,因为
体素
是一个
,一个引用类型,这些是指针。如果它是
结构
,它将是一个值类型,因此每个新引用都将是一个新副本


顺便说一下,要小心强引用循环。确保一个实例的隐式
strong
reference
below
不是另一个其
below
是另一个
strong
引用回另一个实例的实例。要解决这个问题,您需要使所有这些引用
,然后进行一些收集在上(例如,一个集合或一个数组或字典),它维护对双链接列表中所有实例的强引用。

因为
体素
是一个
,一个引用类型,这些都是指针。如果它是
结构
,它将是一个值类型,因此每个新引用都将是一个新的副本


顺便说一下,要小心强引用循环。确保一个实例的隐式
strong
reference
below
不是另一个其
below
是另一个
strong
引用回另一个实例的实例。要解决这个问题,您需要使所有这些引用
,然后进行一些收集在(例如,一个集合或一个数组或字典)上维护对双链接列表中所有实例的强引用。

感谢您告诉我有关引用周期的信息,现在我知道该怎么做了。感谢您告诉我有关引用周期的信息,现在我知道该怎么做了。