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变量持有的引用,但数组引用仍然存在,直到对象从数组中删除或数组被释放。