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
referencebelow
不是另一个其below
是另一个strong
引用回另一个实例的实例。要解决这个问题,您需要使所有这些引用弱,然后进行一些收集在上(例如,一个集合或一个数组或字典),它维护对双链接列表中所有实例的强引用。因为体素
是一个类
,一个引用类型,这些都是指针。如果它是结构
,它将是一个值类型,因此每个新引用都将是一个新的副本
顺便说一下,要小心强引用循环。确保一个实例的隐式strong
referencebelow
不是另一个其below
是另一个strong
引用回另一个实例的实例。要解决这个问题,您需要使所有这些引用弱,然后进行一些收集在(例如,一个集合或一个数组或字典)上维护对双链接列表中所有实例的强引用。感谢您告诉我有关引用周期的信息,现在我知道该怎么做了。感谢您告诉我有关引用周期的信息,现在我知道该怎么做了。