Ios 为什么不';UITableViewDataSource或UITableViewDelegate是否需要在UITableView中定义弱?
我将根据UITableView编写自己的委托或数据源,但我不知道如何定义它。 在UITableView中:Ios 为什么不';UITableViewDataSource或UITableViewDelegate是否需要在UITableView中定义弱?,ios,uitableview,swift,Ios,Uitableview,Swift,我将根据UITableView编写自己的委托或数据源,但我不知道如何定义它。 在UITableView中: var dataSource: UITableViewDataSource! var delegate: UITableViewDelegate! 不需要为“弱”定义吗?如果您指的是使用单独的对象,您很可能不希望将它们标记为弱。举个例子: class MyViewController: UIViewController { @IBOutlet var tableView: UIT
var dataSource: UITableViewDataSource!
var delegate: UITableViewDelegate!
不需要为“弱”定义吗?如果您指的是使用单独的对象,您很可能不希望将它们标记为弱。举个例子:
class MyViewController: UIViewController {
@IBOutlet var tableView: UITableView!
var dataSource: UITableViewDataSource
var delegate: UITableViewDelegate
init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
self.dataSource = SomeCustomDataSource();
self.delegate = SomeCustomDelegate();
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
self.tableView.dataSource = self.dataSource;
self.tableView.delegate = self.delegate;
}
}
在这里,视图控制器对tableView有很强的引用。tableView不包含对其数据源或其委托的强引用,因此视图控制器必须包含对每个数据源或委托的强引用
在委托模式中,应该使用弱引用的位置是定义和使用委托的对象。在本例中,它是UITableView本身。委托模式中的“委托”通常对委托对象具有强引用。例如,许多人将UITableView所在的视图控制器、它的委托和数据源设置为。如果tableView对其委托具有强引用,则将存在循环引用–控制器对table view具有强引用,而table view对控制器(其委托)具有强引用。为什么将它们声明为强制展开选项?