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

标签 iphone objective-c ios protocols categories

我一直在阅读有关 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/

相关文章:

ios - 使用 MPMoviePlayerController 从 iTunes 播放电影?

iphone - 将低于最新版本的 IOS 版本安装到设备

ios - 动画后 UITableViewCell 位置关闭

iOS Core Data 与其他用户交换对象

ios - 未找到授权文件 "Entitlements.plist"。错误

ios - 如何访问mod包中的mom文件?

iphone - UIPageViewController延迟换页动画

iphone - 通过 Javascript 增加 SO 字体大小在我的 iPhone 上不起作用

iphone - 比较两个 UITextField

ios - 应用内购买下载期间设备用尽了磁盘空间