首页 > 解决方案 > Swift TableViewDataSource 分离其他类

问题描述

我有两个例子

第一的

override func viewDidLoad() {
    super.viewDidLoad();
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    tableView.dataSource = TableViewDataSource();
}

第二

var dataSource:TableViewDataSource!;

override func viewDidLoad() {
    super.viewDidLoad();
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    dataSource = TableViewDataSource();
    tableView.dataSource = dataSource;
}

第一个例子不起作用,但第二个例子起作用。这些不一样吗?两个例子有什么区别?

标签: swiftuitableviewtableview

解决方案


第一个不起作用,因为您必须对其设置强引用

tableView.dataSource = TableViewDataSource();

而另一个在这里

var dataSource:TableViewDataSource!;

//

如果您查看 dataSource 委托实现文件,它的声明如下

weak open var dataSource:UITableViewDataSource?

看起来很弱,所以它不保留分配给它的变量,这就是为什么必须强引用其他类实例

在此处输入图像描述


推荐阅读