- Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类)
- Category是OC特有的语法,其他语言没有的语法(类似于C#语言中的”扩展方法”和”partial”关键字)
- Category的作用
- 可以在不修改原来类的基础上,为这个类扩充一些方法.
- 把一个类的内容分在多个不同的文件中存储
- 便于团队协作开发
- 注意点:
- 分类只能增加方法, 不能增加成员变量、@property(可能编译不报错,但是运行有问题)
- 分类可以访问原来类中的成员变量
- 如果分类和原来类出现同名的方法,优先调用分类中的方法,原来类中的方法会被忽略
- 方法调用的优先级(从高到低)
- 分类(最后参与编译的分类优先),只要有分类就优先调用分类,不考虑与主类的编译顺序。
- 原来类
- 父类
- 什么是类扩展
- 可以为某个类扩充一些私有的成员变量和方法
- 写在.m文件中
- 英文名是Class Extension
- 书写格式
-
@interface 类名 ()
@end
- 对比分类,就少了一个分类名称,因此也有人称它为”匿名分类”
-