我查看了一些 Stanford iOS development classes在 Youtube 上,我发现了一些我不清楚的东西。
教授在讲座中讲解了如何创建自定义 View 和自定义数据源类,代码如下:
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
}
professor said dataSource
属性必须声明为 weak
属性以避免 View 和 View Controller 之间的循环保留。
我的问题是:如果我们将 dataSource
属性声明为 strong,为什么会有一个保留周期?由于 outlet
属性是 weak
,是否已经避免了保留周期?
最佳答案
不,不是。请参阅下面的说明。
- View controller 强烈引用他的 View 。
- View Controller 的 View (不是 View Controller )保持对 faceView 的强引用。
- FaceView 保持对 View Controller 的强引用。
关于swift - iOS 数据源和导出引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279300/