Swift 课堂上的快速记忆管理
我有一个案例,我不知道Swift 课堂上的快速记忆管理,swift,memory-management,Swift,Memory Management,我有一个案例,我不知道a对象是否会被释放。这与类a中作为参数函数的函数func b有关 这是问题的简单表示: class A { func a() { } func b(_: ()->()) { } func doThm() { b(a) } } var a = A() a.doThm() 由于类A没有存储的属性,因此不可能有保留周期 调用函数(闭包)不会创建保留周期。存储闭包可能。函数b不以函数作为参数,它
a
对象是否会被释放。这与类a
中作为参数函数的函数func b
有关
这是问题的简单表示:
class A {
func a() {
}
func b(_: ()->()) {
}
func doThm() {
b(a)
}
}
var a = A()
a.doThm()
由于类
A
没有存储的属性,因此不可能有保留周期
调用函数(闭包)不会创建保留周期。存储闭包可能。函数
b
不以函数作为参数,它以Void
/()
/单元的值作为参数。对不起,不太清楚您要问什么?变量a
包含对对象的强引用,因此它不会被释放(不管采用闭包作为参数的方法如何)。我编辑我的问题。抱歉,这是错误的示例,对于更新的代码:只要b
不接受函数,因为不应该有任何所有权周期,并且A
-对象不会卡在内存中。我编辑了我的问题,使问题更清楚。你是对的,我测试了这一点。只有当我在变量中保存closer时,我才会收到视网膜圆。但是,请您解释一下为什么存储闭包可以保留循环?*保留循环,然后阅读