OC基础学习10:类别(category)
类别(category)是一种为现有的类添加新方法的方式。
1 创建类别
一般,只是习惯
把类别代码放在独立的文件中 命名:“类名称+类别名称”,如 NSString+NumberConvenience
- 开始创建类别
生成两个文件,NSString+NumberConvenience.h
:
NSString+NumberConvenience.m
:
类别名在括号中。
可以在@implementation
部分实现自己的方法。任何NSString类的对象都将响应在类别中的方法。正是这种兼容性使类别成为了一种非常强大的概念。
-
类别的缺陷
- 文法向类中添加新的实例变量。
- 名称冲突。类别中的方法与现有的方法重名时,类别中的方法会替代现有的方法。(可在类别名称加前缀)
-
类别的优势
- 将类的实现分散到多个不同文件或多个不同框架中
- 创建对私有方法的前向引用
- 向对象添加非正式协议
-
类扩展(class extentsion):特殊的类别
2 利用类别分散实现代码
不能将@implementation
分散到多个不同的.m
文件中。可以通过类别把大型的单个类分散到多个不同的.m
文件中。
以AppKit中的NSWindow
为例,在NSWindow.h
中搜索@interface
大约能搜到5个类别声明:
类别可以访问其继承的类的实例变量。
3 通过类别创建前向引用
没有真正的私有方法。不在头文件声明,也可以调用,不过编译器会提示警告,并且app store会拒绝上架。 可通过在类别中声明方法避免这种警告。
文章作者 andyron
上次更新 2024-07-16
许可协议 原创文章,如需转载请注明文章作者和出处。谢谢!