objective-c - 类与协议(protocol)之间有什么区别

标签 objective-c ios class protocols

我正在浏览文档,因为我将要实现一个协议(protocol)而不是一个类(这是我以前从未做过的事情),我很好奇两者之间的区别。

谁能用通俗易懂的语言举个例子?

谢谢

最佳答案

用作根据该类的特定实现创建一个或多个对象的蓝图。 一个很好的类比是切黄油 cookies 的形式。表单的属性(形状、大小、高度)定义了您可以用它切出的 cookie。您只有一种形式(类),但您可以使用它创建许多 cookie(该类的实例,即对象)。所有 cookie 都基于该特定形式。 类似地,作为该类实例的所有对象的属性都是相同的。

类 = 数据方法(特殊函数),所有这些都巧妙地捆绑在一起。

类定义了它们内部的内容(数据)是什么+它们可以做什么类型的工作(方法)。 内容基于包含各种数字类型、字符串、常量和其他更复杂的内容+方法的变量,这些方法是(在执行时)对各种数据执行一些计算操作的代码块。

所有方法定义在类中 定义 - 定义方法的名称 + 方法接收哪些(如果有)数据进行处理,以及方法吐出哪些(如果有)数据供其他人处理。类中定义的所有方法也有实现——提供处理的实际代码——它是方法的内部工作..里面有处理数据的代码,也可以向其他方法请求子处理数据。所以类是编程中非常高贵的类型。

如果你理解了上面的内容,你就会明白什么是协议(protocol)。

协议(protocol) 是一个或多个方法声明 的集合,该集合有一个名称并代表一个协议(protocol)。我说声明,因为一起由特定协议(protocol)定义的方法,没有定义任何实现代码。。唯一存在的是他们声明的名字。 看上面 - 在类里面,您不仅定义了该类具有哪些方法,还定义了该工作将如何完成。但是协议(protocol)中的方法没有任何实现。

让我们再次用现实生活中的类比,它会有所帮助。如果你来我家住一周,你将需要遵守我的 TidyUp 协议(protocol)。 TidyUp 协议(protocol)定义了三种方法——每天洗碗、打扫房间和通风新鲜空气。这三种方法,我定义它们..是你会做的事情。但我绝对不在乎,实现应该是什么样子,我只是名义上定义了方法。您将实现它们,即您定义该工作(那些方法)的细节将是什么样子。我只是说,遵守我的协议(protocol)并按您认为合适的方式实现。

Finale – 您可以声明一些类(class)。您也可以单独声明一个协议(protocol)。然后你可以声明,这个类除了它自己的方法外,还将采用或遵守该协议(protocol),即。该类将实现协议(protocol)的方法。

关于objective-c - 类与协议(protocol)之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492397/

相关文章:

ios - 如何仅比较文本中选定的字符串与 objective-c 中的给定输入

objective-c - 为什么 UIAlertView dismissAnimated : work at all?

iphone - iPad侧边栏界面

ios - 使用显示/更少按钮展开/折叠表格 View 单元格

objective-c - iOS在普通tableview中使用背景

ios - 线程 1 : "-[_UIDatePickerIOSCompactView setHighlightsToday:]: unrecognized selector sent to instance"

ios - 为什么即使配置文件设置为分发,xcode 也会抛出此错误?

java - 从另一个类调用方法时遇到问题

java - 类类型作为 Java 中的字段

java - 作业 Java - 语法错误,无法调用数组中的方法。