作者:爱唱歌的郭少文_ | 来源:互联网 | 2023-02-11 11:10
我基本上使用outlet作为弱变量,比如
@IBOutlet weak var testButton: UIButton!
但是,如果我使用强而不是弱,会发生什么
@IBOutlet var testButton: UIButton!
使用后我必须将其设置为零吗?
1> Duncan C..:
你得到了一些不好的答案.
奥特莱斯通常很弱,并且隐含地解开了选择权.这就是!
类型后的含义.
出口被声明为弱,以避免在不再需要后将视图层次结构保留在内存中.(通常情况下,出口是由它的超级视图拥有的,只是从它的超级视图中删除它会导致它被取消分配.通常这是正确的行为.如果你想要一个插座在从它的超级视图中删除后继续存在,你可以创建另一个强引用或使出口强劲,但在这种情况下,你完成它后,你可以把它弄出来)
奥特莱斯应该被宣布为弱者,除了极少数例外.是的,如果你声明它们很强大,那么当你完成它们时你应该把它们弄清楚.(虽然如果你的视图控制器被解除分配,那么它并不重要,因为它的强引用会消失.)
"出口被宣布为弱,以避免保留周期".我认为这不是原因:视图不应该强烈引用控制器层.我假设`IBOutlet'被创建为弱以使视图卸载工作.我总是让它们"强大",因为卸载已成为过去.