Xcode故事板出口:减弱或不减弱

问题描述 投票:-2回答:1

仅获得一个新的MBPro,这意味着将重新安装Xcode。现在,使用情节提要板和(控制)拖动在助手中创建出口时,它现在默认为weak var。前一段时间,这是默认设置。但是到了某个时候,它似乎转换为不弱。

为什么默认值会更改,绑定到按钮和东西的插座变量的默认值更好?

swift xcode xcode-storyboard
1个回答
0
投票

正如holex所说。这取决于您的用例。没有最佳实践。而且历史上有很多选择可以处理观点。首先,最重要的是:如果将视图添加到视图层次结构(例如addSubview()),它将具有很强的关系。

很好,除非您要使用添加的视图。为此,您需要参考。

一个变体将遍历子视图的数组并寻找您的视图。时光倒流,可以使用更简单的UI,这就是其内置的原因。每个视图都可以有一个标记,而视图的超级视图无法定位该标记。

func viewWithTag(_ tag: Int) -> UIView?

另一种方法是保留对该视图的引用,而不是查找它。这就是网点发挥作用的时候。但是,如果您拥有对对象的引用,则默认情况下会创建一个牢固的关系。这意味着该对象在两个地方保持活动状态。

回来,时间很好。更简单的应用程序,如果视图卡住了,那也不是一件容易的事,因为垃圾收集器会在处理该应用程序时丢弃所有对象。 (好吧,那绝对不是一个好习惯)

如果您拥有一个更加静态的用户界面,则可以说您正在尝试,这并不重要。保持弱小的关系是可以的。

Btw Xcode询问您要使用强引用还是弱引用,并将您的决定用作默认设置。可能您只更改了一次并习惯了新的“默认”enter image description here

如果您拥有更加动态的UI,请查看UITableView的工作原理。 UITableViewCells是视图,您通常不保存对它们的引用来对其进行修改。

但是对于Outlets的最佳建议是:问问自己是否真的需要它。通常,以某种方式修改UIView的代码应带有视图自己的类,而不是将所有代码都放在一个地方。(MVC并不意味着所有代码都进入UIViewController中)

© www.soinside.com 2019 - 2024. All rights reserved.