问题描述
我正在创建一个对象,我在其中调用它以在由按钮控制的布尔循环中运行一个函数。创建对象后,我调用它的两个函数,以便我可以获得返回值并将它们传递给下一个函数。一旦循环完成,对象仍然被引用,因此它不会被 ARC 设置为零,因此我造成了内存泄漏。我正在尝试使用 weak
引用类型,但是当我尝试继续引用对象时。我将在不更改变量类型或创建可选运算符的情况下粘贴泄漏的代码,以便您可以看到我从哪里开始。
self.buttonpress = true
DispatchQueue.global().async{
while buttonpress == true{
let varfind = find()
let b = varfind.build()
let yes = varfind.isInside(index: b,xaxis: locationViewModel.userXaxis,yaxis: locationViewModel.userYaxis)
self.final = String(Int(locationViewModel.userZaxis)-yes)
}
}
问题是,我如何让 while 循环中的内容执行并取消引用对象及其指针,以便它不会越来越多地占用内存并使用弱变量类型崩溃?
我知道我需要使用 let varfind : find? = find()
,然后在 find 类中添加一个 deinit
以便将所有内容设置为 nil 但是,我认为在设置参数时存在误解例如在 var yes 到 nil 作为索引是一个 [String]
所以它只能接受一个空数组?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)