协议和分类、
2018-04-23 本文已影响0人
晴天ccc
OC的协议:
协议就是规则,我们定义了一个协议就相当于制定了一个规则。OC中的类可以遵守规则,遵守协议的类就相当于多了一种或几种能力。
协议的定义:
@protocal
@required 声明必须遵守的属性和方法 (默认)
@optional 声明可选遵守的属性和方法。
@end
协议的遵守:
@interface XYClass : NSObject <XYProtocal>
协议在尖括号中。如果遵守多个协议则:
@interface XYClass : NSObject <XYProtocal,XYProtocal1,XYProtocal2>
创建一个协议:
然后我们编辑协议类,里面的方法有选择实现和必须实现。
我们创建大学生类。UniversityStudent 在h文件中遵守协议,在m文件中实现协议的方法。
最后我们在main函数里面进行调用。
输出结果就是:
OC的分类:
概念:Category 分类是OC特有的语言,依赖于类。分类的作用:分类也是类的一部分。也是类的一个补充和扩展部分。
在不改变原来的类内容的基础上,为类增加一些方法。
如何创建一个分类:
(1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量
(2)在分类方法的实现中可以访问原来类中的成员变量;
(3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告);
(4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;
(5)在很多的情况下,往往是给系统自带的类添加分类,如NSObject和NSString,因为有的时候,系统类可能并不能满足我们的要求。
(6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。