Arrays 使用弱变量的循环引用导致零的展开

Arrays 使用弱变量的循环引用导致零的展开,arrays,swift,reference,weak,Arrays,Swift,Reference,Weak,让我先说,我搜索了一个对我有帮助的话题,但我找不到任何有帮助的话题。这是我的情况 我创建了一个类符号,在这里我创建了变量thing1。然后我创建了一个名为arrayX的数组,它使用符号。然后我使用NSURL会话从域中提取值。然后我创建了保存该值的thingX,最后我将arrayX的值附加到thingX。这非常有效,只是我有很强的循环引用,并且内存无法释放。我尝试用弱引用修复它,但偶尔出现的空thingX会导致我的应用程序崩溃,因为它试图打开一个nil。请帮忙 class sign {

让我先说,我搜索了一个对我有帮助的话题,但我找不到任何有帮助的话题。这是我的情况

我创建了一个类
符号
,在这里我创建了变量
thing1
。然后我创建了一个名为
arrayX
的数组,它使用
符号
。然后我使用NSURL会话从域中提取值。然后我创建了保存该值的
thingX
,最后我将
arrayX
的值附加到
thingX
。这非常有效,只是我有很强的循环引用,并且内存无法释放。我尝试用弱引用修复它,但偶尔出现的空
thingX
会导致我的应用程序崩溃,因为它试图打开一个nil。请帮忙

class sign {

    var thing1        = ""

    init(thing1: String) {

        self.thing1   = thing1

    }

}


var arrayX : [sign] = [sign]()


index1 = 0

while index1 < count {

      //NSURL will grab info info will grab a value from my domain and thingX will be given this value (occasionally the value will be empty)

     let thingX = ‘NSURL value’  as! String

     let data1 = sign(thing1: thingX)
     self.arrayX.append(data1)

     index1++

}
类符号{
var thing1=“”
init(thing1:String){
self.thing1=thing1
}
}
变量arrayX:[符号]=[符号]()
index1=0
而index1<计数{
//NSURL将获取info info将从我的域中获取一个值,thingX将获得该值(有时该值将为空)
让thingX='NSURL value'作为!字符串
让data1=符号(thing1:thingX)
self.arrayX.append(数据1)
index1++
}

如果你有一个循环要运行一定的次数,比如你想运行“计数”时间的while循环,你应该考虑使用for循环而不是while循环。计数会有所不同。每次执行这段代码时,我的内存都在不断积累。这段代码编译吗?确实看起来像是
var arrayX:[sign]=sign
没有机会。在我尝试将数据1设置为弱引用之前,它编译并运行得很好-然后它崩溃并说是因为它意外地打开了一个nil。我不明白您认为循环引用是什么,或者为什么将数据1设置为弱引用会有所帮助。在循环中创建一个
符号
对象,使其在循环中有1个引用和局部范围。将其附加到数组中,这样现在它就有了第二个引用,该引用由循环外部的数组持有。然后离开循环,删除data1变量持有的引用,但数组引用仍然存在,直到对象从数组中删除或数组被释放。