Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 苹果公司如何规定哪些类应该被划分为一个类的协议接口?_Ios_Cocoa_Delegation - Fatal编程技术网

Ios 苹果公司如何规定哪些类应该被划分为一个类的协议接口?

Ios 苹果公司如何规定哪些类应该被划分为一个类的协议接口?,ios,cocoa,delegation,Ios,Cocoa,Delegation,通过使用UITableView和NSSpeechSynthesizer开发大量应用程序,我一直在思考“委派”一词的确切含义。我读过一些有用的博客和书籍,所以它似乎可以归结为一种设计模式,实现单一责任或关注点分离,至少这是我的观点。我的问题是,有人知道Apple决定在类中使用委托组合的意义吗?忘记设计模式吧。如果存在设计模式,那么它就是委托设计模式 UITableView可以以无数种不同的方式显示数据。数据可以来自无数不同的地方。UITableView无法处理所有这些 这就是应用程序提供一个委托对

通过使用UITableView和NSSpeechSynthesizer开发大量应用程序,我一直在思考“委派”一词的确切含义。我读过一些有用的博客和书籍,所以它似乎可以归结为一种设计模式,实现单一责任或关注点分离,至少这是我的观点。我的问题是,有人知道Apple决定在类中使用委托组合的意义吗?

忘记设计模式吧。如果存在设计模式,那么它就是委托设计模式

UITableView可以以无数种不同的方式显示数据。数据可以来自无数不同的地方。UITableView无法处理所有这些

这就是应用程序提供一个委托对象为UITableView提供数据的原因。代理必须能够告诉UITableView表中有多少节,每个节中有多少行,每行的数据,每个节的页眉和页脚。有了这些知识,UITableView就可以完成它的工作。如果没有这个委托,您将不得不创建大量的UITableView子类,这是一个难题

但是不存在UITableViewDelegate类,因为这样您就必须创建UITableViewDelegate的许多子类,并且有着与无数子类完全相同的问题。相反,有一个协议。协议定义委托需要支持的方法,然后将这些委托方法添加到理解数据的类中


委托模式的工作原理是:创建一个完成这项艰巨工作的类。但是为了使类能够适应不同的情况,您为它提供了一个委托对象,该对象实现了不同情况之间的差异。委托对象通常是一个完全不相关的类的实例,委托方法已添加到该类中

你的评论让我有点好奇,Swift中的痛苦会是什么样子,授权如何解决它。有没有推荐的链接可以显示这一点?这个答案在技术上是不正确的。数据不是来自委托,而是来自数据源。委托定义策略,数据源提供内容,tableview负责呈现它。