【发布时间】:2020-06-25 15:48:04
【问题描述】:
我在 google 上查找了这个主题,但还没有一个可以理解的答案,问题是我知道当两个类通过从第二个类实例化第一个类中的一个对象并在第一类的第二类,这将导致一个保留循环,应该通过使用关键字weak or unowned 来打破该循环,但我不能将这种思维方式应用于被声明为弱的 IBOutlets 例如
class SignUpViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var signUpBttn: UIButton!
}
这是我的 viewController 类中的一个出口,为什么出口被声明为弱?据我了解,为了有一个保留周期,uibutton 类应该有一个来自 viewController 类的对象,以便两个类(viewController 和 uibutton)耦合在一起 任何人都可以澄清幕后发生的事情吗?
【问题讨论】:
-
这是讨论here
-
@ReinhardMänner 我看到了这篇文章,但整个事情对我来说仍然很模糊:S
-
Outlets 没有“默认”声明为弱,所以问题的整个前提是错误的。
-
然而,一种思路可能会运行:视图控制器对其视图有一个强引用。该视图对其子视图有很强的引用。我们真的需要从视图控制器到子视图的另一个强引用吗?谁拥有子视图?它的超级视图。
标签: ios swift memory-management