分类
分类都能做哪写事情?
- 为已存在的类添加方法
- 分解体积庞大的类文件
- 把Framework的私有方法公开(可以创建对私有方法的前向引用)
分类和继承的区别
- 分类可以实现功能分类的封装
- 另外分类更符合面向对象的核心原则“开放封闭原则”,对扩展开放,对修改封闭
分类和扩展的区别
- 扩展可以直接添加属性,分类不能直接添加属性
- 扩展的方法必须要实现,分类的方法不一定要实现
- 分类是在运行时才将分类中的方法添加到宿主类上的
- 为系统类添加分类,扩展是不可以的
分类中可以添加哪些内容?
- 实例方法
- 类方法
- 协议
- 属性
在分类中声明属性,系统只是默认生成了set和get方法,并没有自动生成实例变量
- 实例变量/成员变量
不能直接添加,需要通过runtime的关联对象才能添加
扩展
一般用扩展做什么?
- 声明私有属性
- 声明私有方法
- 声明私有成员变量
分类和扩展的区别
- 扩展是编译时决议的,分类是运行时决议的
- 扩展只声明不实现,放在宿主类的.m文件中,分类是既声明又实现
- 不能为系统类添加扩展,可以为系统类添加分类
网友评论