IOS开发中的协议,扩展和类别有什么区别? 以及如何适当地使用它们?
另外,Swift和Objective-C语言之间的这三样东西是否有区别? 谢谢。
协议
协议声明了任何类可以select实现的编程接口。
协议定义了适合特定任务或function块的方法,属性和其他需求的蓝图。 协议就像接口一样,提供了一些符合类必须实现的方法。
用途:
- 一个常见的用例是让你改变某些类的行为,而不需要对它们进行子类化。
- 例如:
UITableViewDelegate
,UITableViewDataSource
另见协议
延期
扩展为现有的类,结构,枚举或协议types添加新的function。 这包括扩展您无法访问原始源代码的types(称为追溯build模)。
扩展与Objective-C中的类别相似 。 (与Objective-C类别不同,Swift扩展没有名称。)
用途:
-
类别是一种通过将其实现扩展到多个文件来模块化类的方法。 扩展提供了类似的function。
-
类别最常见的用途之一是将方法添加到内置数据types,如
NSString
或NSArray
。 这样做的好处是你不必更新现有的代码来使用新的子类
Objective-C中的扩展和类别有一些区别
类别允许您在主界面文件之外添加方法。 而扩展必须在主接口文件中实现。 这意味着我们可以安全地断定你不能使用扩展来扩展Builtin类或者你没有源代码的类,那么你应该使用Categories。 要使用扩展名,您需要访问正在扩展的类的源代码。
协议
延期
类别
协议和扩展的概念在Swift中也是一样的。 扩展与Objective-C中的类别相似。 (与Objective-C类别不同,Swift扩展没有名称。