1
我想知道当你在内存管理方面(即我想避免一个保留周期)在Swift中为一个块分配一个函数时它意味着什么。在Swift中将函数分配给块时捕获语义?
例如,假设我有如下定义按钮:
class Button {
var wasTapped:() -> Void
}
我用它在一个视图控制器像这样:
class ViewController {
let button: Button
func setUpButtonHandler() {
button.wasTapped = ...
}
func buttonWasTapped() {
// do something
}
}
我的问题是关于button.wasTapped = ...
分配。
显然,如果我把它像这样:
button.wasTapped = { self.buttonWasTapped() }
我刚刚创建了一个保留周期:视图控制器 - >按钮 - >视图控制器。
然而,斯威夫特让我做这件事,而不是:
button.wasTapped = buttonWasTapped
它是安全的这样做呢? (即,这是否会阻止保留周期?)
帮助文章:) +1 –