gpt4 book ai didi

ios - 数据源和委托(delegate)什么时候应该是不同的对象?

转载 作者:可可西里 更新时间:2023-11-01 17:17:44 26 4
gpt4 key购买 nike

在什么情况下需要为数据源和委托(delegate)使用单独的对象?我遇到的大多数应用程序都强调要有 self.currentView.delegate = self。仅仅是为了可读性和分割代码吗?

最佳答案

数据源只是一种具有不同名称和不同职责集的委托(delegate)。苹果explains this nicely在文档中:

A data source is like a delegate except that, instead of being delegated control of the user interface, it is delegated control of data.

将这两个角色分开允许开发人员在适合他们的时候为每个角色指定不同的对象,而不是强制他们使用一个对象来完成两个相关但不同的任务。永远没有必要为两个角色使用不同的对象,但有时会很方便。

考虑一个 View Controller ,其中包含一个可以在多个“模式”之间切换的表格,其中每个模式显示相同的项目但具有不同的细节。实现这样一个表的一种方法是在 View Controller 中做所有事情,但是你最终得到的代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *theCell = nil;
switch (self.selectedMode) {
case kFirstMode: {
// set up the kind of cell required for mode 1
break;
}
case kSecondMode: {
// set up the kind of cell required for mode 2
break;
}
//...and so on...
}
return theCell;
}

您已经闻到负面代码审查的味道了,对吧?

另一种可以说是更好的方法是为每种模式创建单独的数据源对象。当用户切换模式时,您只需换入一个知道如何为所选模式显示数据的新数据源。当不同模式显示完全不同的数据项而不是同一项的不同方面时,此方案效果更好。

关于ios - 数据源和委托(delegate)什么时候应该是不同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25418027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com