什么是Category
- Category有很多种翻译:分类\类别\类目(一般叫分类)
- Category是OC特有的语法,其他语言没有的语法
- Category的作用
- 可以在不修改原来类的基础上,为这个类扩充一些方法
书写格式
- 声明
- @interface 类名(分类名称)
- @end
- 实现
- @implementation类名(分类名称)
- @end
书写格式举例
- 声明
- #import "Student.h"
- @interface Student (Study)
- @end
- 实现
- #import "Student+Study.h"
- @implementation Student (Study)
- @end
使用Xcode创建分类
使用注意
- 分类只能增加方法,不能增加成员变量
- 分类可以访问原来类中的成员变量
- 如果分类和原来类出现同名的方法,优先调用分类中的方法,原来类中的方法会被忽略
- 方法调用的优先级(从高到低)
- 分类(最后参与编译的分类优先)
- 原来类
- 父类
价值所在
- 实现了类的相关方法的模块
- 把不同的方法分配到了不同的分类文件中
- 可以用一个分类来代表一类功能(一个模块)
- 支持团队协作
- 可以让团队内部的不同成员共同扩充某个类的功能
- 可以为系统自带的类扩充功能
类扩展
- 什么是类扩展
- 可以为某个类扩充一些私有的成员变量和方法
- 写在.m文件中
- 英文名是Class Extension
- 书写格式
- @interface 类名()
- @end
- 对比分类,就少了一个分类名称,因此也有人称它为"匿名分类"