iphone - Objective-C的协议(protocol)和类别可以继承吗?

标签 iphone objective-c ios protocols objective-c-category

我对 Objective-C 协议(protocol)和类别的一些概念有点困惑。

Objective-C中的子类可以继承协议(protocol)和类别吗?

最佳答案

类别是在运行时添加到类中的方法的集合。因为 Objective-C 使用动态绑定(bind),这意味着类别中定义的方法可用于该类及其所有子类。特别是选择器在它们被调用时绑定(bind)到方法,而不是在编译期间或程序首次加载时。加载类别时,会将类别添加到类中。

协议(protocol)定义了符合协议(protocol)的类 promise 实现的方法签名的集合。一旦一个类声明它符合协议(protocol),就好像在该类的接口(interface)中声明了方法一样,继承规则完全相同:子类继承协议(protocol)方法的声明和实现,但也可以选择覆盖父类(super class)实现。

协议(protocol)本身可以扩展以产生新的协议(protocol)。由原始协议(protocol)中方法的超集组成。事实上,正如大多数类继承自 NSObject类,大多数协议(protocol)扩展了 NSObject协议(protocol)(协议(protocol)名称和类名称在不同的 namespace 中)。这样对象声明为 id<WhateverProtocol>可以发送基本消息,如 -retain , -release等等,而不会生成编译器警告。

关于iphone - Objective-C的协议(protocol)和类别可以继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470994/

相关文章:

objective-c - NSMutableURLRequest:使用setHTTPBodyStream而不是setHTTPBody上传文件

ios - 1 < -1 的计算结果为 TRUE

c++ - iOS集成unity 4.6.3项目(64位&& IL2CPP)。出现如下这样的错误,如何解决呢?

ios - 命令行构建一个没有开发团队的 iOS 示例项目

ios - Objective-C 索引数组

iphone - 使用 AFNetworking 发送多张图像

ios - 在iOS上将NSData转换为NSAttributedString

ios - 'sliderChanged : unrecognized selector sent to instance'

iphone - 为什么我们在 iOS 中需要 property outlet 和 variable?

iphone - 如何绘制 UITableViewCell 的 contentView?