分类 Category
分类只能给类扩充方法,不能添加属性!
- 什么是Category
- Category有很多种翻译:分类 / 类别 / 类目(一般叫分类)
- 分类是一个类的补充,是类的一部分。
- Category的作用:
- 可以在不修改原来类的基础上,为这个类扩充一些方法。(使用继承也可以,在子类中扩充父类没有的方法)
- 一个庞大的类可以分模块开发
- 一个庞大的类可以由多个人来编写,更有利于团队合作
- 常见用法
- 将一个类分成若干个部分,便于阅读和管理
- 给一个已有的类通过定义分类的方式增加功能(经常给系统的类扩充方法)
- 语法格式
@interface 类名 (分类名) //声明扩充的方法 @end |
@implementation 类名 (分类名) //实现扩充的方法 @end |
创建一个分类:
分类的注意事项:
- 分类是用于给原有类添加方法的, 它只能添加方法, 不能添加属性(成员变量)
- 分类中定义@property属性, 只会生成setter/getter方法的声明,不会生成方法的实现和实例变量。
- 可以在分类中访问原有类中.h中的属性
方法的调用顺序: 1.分类 —> 2.本类 —> 3.父类
扩展 Extension
匿名分类 在类的.m文件中定义扩展,在扩展中定义私有属性和私有方法。
- 概念
- Extension有很多种翻译:扩展 / 延展 / 匿名分类(一般叫扩展)
- 扩展是一特殊的分类, 没有分类名。
- 可以在扩展中定义实例变量,定义属性,增加方法。
- 语法格式
@interface 类名 ( ) //声明私有的成员变量 //声明私有的属性 //声明私有的方法 @end |
- 扩展最常用的方式是:
在类的.m文件中定义扩展,在扩展中定义私有的属性和声明私有的方法。
在UI中常用扩展来定义私有属性!
Category练习: