一、分类(category)
1.概念
分类是对类的扩展,当类较大时,想扩展新的方法时,可采用分类进行处
理。分类中不能定义变量,只能定义方法。分类可以访问原始类的变量和方
法。分类命名规则以+分隔。
2.Category的使用场景:
a、当你在定义类的时候,在某些情况下(例如需求变更),你可能想要为其中的某个或几个类中添加方法。
b、一个类中包含了许多不同的方法需要实现,而这些方法需要不同团队的成员实现
c、当你在使用基础类库中的类时,你可能希望这些类实现一些你需要的方法。
3.注意
a、Category可以访问原始类的实例变量,但不能添加变量,如果想添加变量,可以考虑通过继承创建子类。
b、Category可以重载原始类的方法,但不推荐这么做,这么做的后果是你再也不能访问原来的方法。如果确实要重载,正确的选择是创建子类。
c、和普通接口有所区别的是,在分类的实现文件中可以不必实现所有声明的方法,只要你不去调用它。
4.格式
**
二、协议(protocal)
**
1、分类
分为可以可选的实现接口@optional,也有必选的实现接口@required。
2、注意
a.一个协议可以扩展自另一个协议,如果需要扩展多个协议中间使用逗号分
隔;
b.协议中定义的方法不一定是必须实现的,可以通过关键字进行@required
和@optional进行设置,如果不设置则默认是@required;
c.协议通过<>进行实现,一个类可以同时实现多个协议,中间通过逗号分隔;
d.协议的实现只能在类的声明上,不能放到类的实现上;
e.协议中不能定义属性、成员变量等,只能定义方法;
3.格式
creat by 李梦珂