我一直在阅读有关 Objective-c 协议(protocol)和类别的文章,但对我来说两者似乎都毫无意义。它们都用于以某种有趣的方式向程序添加内容,而不是仅仅手动添加。
我可能确信协议(protocol)的目的是让您可以检查 ID 的类型,但仅此而已。我认为它们没有其他实际用途。
至于类别,我真的不明白您为什么不直接将它们添加到代码中。为什么您需要在您要实现的类别中手动指定方法,而不是正常执行?您是否想创建一个“子类”但稍作修改?为什么不创建一个子类?
我真的看不出这两个的用途,希望有人能告诉我它们的真正用途=/
提前致谢, 基督徒
最佳答案
类别是将方法添加到源代码对您不可用的类,例如所有 Apple 类(以 NS、CG、CA 等开头的类),而不需要对其进行子类化。
协议(protocol)的目的是定义遵守该协议(protocol)的类必须实现的方法。在 Java 中,这些称为接口(interface)。目的是整理非兄弟类(同一父类(super class)的子类)之间的相似性。假设你有一个类 Chair
和一类 Petrol
.它们没有太多共同点,除了它们都遵守 flammable
。协议(protocol),这要求它们具有某些方法,例如 specificEnergy
和 flamingPoint
.
现在您的 Fire
类可以有一个方法 addFlammableMaterial:(id <flammable>)material
.
协议(protocol)通常用于声明某些类的实例可以是某些其他实例的委托(delegate)。您可以声明您的 View Controller 充当 UITableView
的数据源。通过声明它符合 UITableViewDataSource
协议(protocol),这意味着您的 viewController 保证它实现了该协议(protocol)所需的方法,并且 tableView 可以安全地休息,因为它可以信任 VC 作为它的数据源。
关于iphone - Objective-c - 类别和协议(protocol)的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394915/