我在 Youtube 上查看了一些斯坦福 iOS 开发课程,我发现了一些我不清楚的地方。在讲座中教授解释了如何创建自定义视图和自定义数据源类,代码如下:
FaceView.swift
protocol FaceViewDataSource: class {
// some stuff here
}
class FaceView: UIView {
// some uninteresting properties here
weak var dataSource: FaceViewDataSource?
// other stuff here
}
幸福视图控制器.swift
class HappinessViewController: UIViewController, FaceViewDataSource {
@IBOutlet weak var faceView: FaceView!
// other stuff here
}
教授说,必须
将dataSource
属性声明为weak
属性,以避免视图和视图控制器之间的保留循环。
我的问题是:如果我们将属性声明为强,为什么我们会有一个保留周期dataSource
?既然outlet
属性是weak
,是不是已经避免了保留循环?