iOS数据源和插座参考

时间:2015-03-26 13:10:02

标签: swift weak-references custom-view retain-cycle

我在Youtube上看了一些Stanford iOS development classes,我发现了一些我不清楚的事情。 在讲座中,教授解释了如何创建自定义视图和自定义数据源类,代码如下:

FaceView.swift

protocol FaceViewDataSource: class {
    // some stuff here
}

class FaceView: UIView {

    // some uninteresting properties here

    weak var dataSource: FaceViewDataSource?

    // other stuff here
}


HappinessViewController.swift

class HappinessViewController: UIViewController, FaceViewDataSource {

    @IBOutlet weak var faceView: FaceView!

    // other stuff here
}


必须将dataSource属性声明为weak属性的professor said,以避免在视图和视图控制器之间保留周期。

我的问题是:如果我们宣布dataSource属性为强,我们为什么会有一个保留周期?由于outlet属性为weak,是否已避免保留周期?

1 个答案:

答案 0 :(得分:3)

不,不是。请参阅下面的说明。

  • 视图控制器强烈引用他的视图。
  • 查看控制器的视图(不是视图控制器)保持对faceView的强引用。
  • FaceView保留对View控制器的强引用。