我想外包tableView的委托和数据源协议。 因此,我创建了一个新的TableViewController
,为它制作了一个Cocoa Touch Class
并删除了故事板中现有的委托和数据源连接。最后,我以编程方式设置委托和数据源。 它迄今为止工作正常,但我有一个问题。 请先看看我的代码。外包TableView协议
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
let protocols = TableViewProtocols()
tableView.delegate = protocols
tableView.dataSource = protocols
}
}
正如我所说的它工作正常,但我试图使它更容易,不工作
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = TableViewProtocols()
tableView.dataSource = TableViewProtocols()
}
}
在我创建的TableViewProtocols
一个对象,并在protocols
保存它的第一个例子。我将它分配给委托和数据源。这是行得通的。
在第二个示例中,我没有保存TableViewProtocols
的实例。相反,我在一行中创建并分配了一步。 而这不起作用。我不知道为什么。因为对我来说它看起来是一样的。首先创建一个对象和创建并直接在一行中分配有什么不同?
任何建议都被占用。 谢谢。
第二个不工作,因为它创建TableViewProtocols'的'两个独立的实例。作为一种猜测,代表和数据源彼此交互(相互依赖),使得它们必须处于同一个实例中。 – bobnoble
好的,是的,我认为你是对的。这就说得通了。非常感谢你。 – user1895268