IOS开发中的协议,扩展和类别有什么区别? 以及如何适当地使用它们?

另外,Swift和Objective-C语言之间的这三样东西是否有区别? 谢谢。

协议

协议声明了任何类可以select实现的编程接口。

协议定义了适合特定任务或function块的方法,属性和其他需求的蓝图。 协议就像接口一样,提供了一些符合类必须实现的方法。

用途:

  • 一个常见的用例是让你改变某些类的行为,而不需要对它们进行子类化。
  • 例如: UITableViewDelegateUITableViewDataSource

另见协议

延期

扩展为现有的类,结构,枚举或协议types添加新的function。 这包括扩展您无法访问原始源代码的types(称为追溯build模)。

扩展与Objective-C中的类别相似 。 (与Objective-C类别不同,Swift扩展没有名称。)

用途:

  • 类别是一种通过将其实现扩展到多个文件来模块化类的方法。 扩展提供了类似的function。

  • 类别最常见的用途之一是将方法添加到内置数据types,如NSStringNSArray 。 这样做的好处是你不必更新现有的代码来使用新的子类


Objective-C中的扩展和类别有一些区别

类别允许您在主界面文件之外添加方法。 而扩展必须在主接口文件中实现。 这意味着我们可以安全地断定你不能使用扩展来扩展Builtin类或者你没有源代码的类,那么你应该使用Categories。 要使用扩展名,您需要访问正在扩展的类的源代码。

协议

延期

类别

协议和扩展的概念在Swift中也是一样的。 扩展与Objective-C中的类别相似。 (与Objective-C类别不同,Swift扩展没有名称。