在swift中,是否有必要在使用后将强变量设置为nil?

ARU*_*MAR 0 ios swift

我基本上使用outlet作为弱变量,比如

@IBOutlet weak var testButton: UIButton!
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用强而不是弱,会发生什么

@IBOutlet var testButton: UIButton!
Run Code Online (Sandbox Code Playgroud)

使用后我必须将其设置为零吗?

Dun*_*n C 5

你得到了一些不好的答案.

奥特莱斯通常很弱,并且隐含地解开了选择权.这就是!类型后的含义.

出口被声明为弱,以避免在不再需要后将视图层次结构保留在内存中.(通常情况下,出口是由它的超级视图拥有的,只是从它的超级视图中删除它会导致它被取消分配.通常这是正确的行为.如果你想要一个插座在从它的超级视图中删除后继续存在,你可以创建另一个强引用或使出口强劲,但在这种情况下,你完成它后,你可以把它弄出来)

奥特莱斯应该被宣布为弱者,除了极少数例外.是的,如果你声明它们很强大,那么当你完成它们时你应该把它们弄清楚.(虽然如果你的视图控制器被解除分配,那么它并不重要,因为它的强引用会消失.)

  • "出口被宣布为弱,以避免保留周期".我认为这不是原因:视图不应该强烈引用控制器层.我假设`IBOutlet'被创建为弱以使视图卸载工作.我总是让它们"强大",因为卸载已成为过去. (2认同)