gpt4 book ai didi

iphone - Objective-c - 类别和协议(protocol)的目的

转载 作者:可可西里 更新时间:2023-11-01 04:05:31 24 4
gpt4 key购买 nike

我一直在阅读有关 Objective-c 协议(protocol)和类别的文章,但对我来说两者似乎都毫无意义。它们都用于以某种有趣的方式向程序添加内容,而不是仅仅手动添加。

我可能确信协议(protocol)的目的是让您可以检查 ID 的类型,但仅此而已。我认为它们没有其他实际用途。

至于类别,我真的不明白您为什么不直接将它们添加到代码中。为什么您需要在您要实现的类别中手动指定方法,而不是正常执行?您是否想创建一个“子类”但稍作修改?为什么不创建一个子类?

我真的看不出这两个的用途,希望有人能告诉我它们的真正用途=/

提前致谢,基督徒

最佳答案

类别是将方法添加到源代码对您不可用的类,例如所有 Apple 类(以 NS、CG、CA 等开头的类),而不需要对其进行子类化。

协议(protocol)的目的是定义遵守该协议(protocol)的类必须实现的方法。在 Java 中,这些称为接口(interface)。目的是整理非兄弟类(同一父类(super class)的子类)之间的相似性。假设你有一个类 Chair和一类 Petrol .它们没有太多共同点,除了它们都遵守 flammable。协议(protocol),这要求它们具有某些方法,例如 specificEnergyflamingPoint .

现在您的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com