//OC里面只允许单继承,所以不用:了。//Category也叫类目,是OC中非常重要的语法,高手必备技能,年薪四十万不是梦。//Category是扩展类功能的方法之一。//Category无论有无源代码,都能为类添加功能。一般来说,如果我们有了源代码,通常不用Category,而是直接修改源代码,在源代码中添加方法的声明和实现。所以说Category是为没有源代码的类添加方法,以增强原始类的功能。//Category中的方法与原始类中的方法,没有贵贱之分,都相当于原始类中的方法,都是通过消息发送机制接收的。//通过Category添加的方法,会被原始类的子类继承。例如,我们给字符串类添加了一个Hello方法,那么它的子类可变字符串类也可以使用Hello方法。 //定义Category的语法格式,与定义类的语法格式很相似。包含声明和实现两部分。声明部分,声明你要添加什么方法。实现部分,实现添加的方法。//Category声明的语法格式 /* @interface 原始类类名 (分类名/功能名) 方法列表(与原始类方法列表一样,可以根据我们的需求添加0到多个方法,可以添加类方法,也可以添加实例方法。方法的参数以及类型根据需求自定,有无返回值自定,一切都是自定) @end //关于分类名,因为一个类可以定义多个分类,所以为了区别各个分类,每个分类都要有自己的名字。这个名字要有意义!!!名字的意义在于表明当前这个分类方法的作用。例如我们现在这个分类名Hello,那么在声明部分我们可以添加sayHi或者Hello的方法,用来打招呼。 */ //Category的实现部分/* @implementation 原始类类名 (分类名) //实现分类中所有的方法 @end */ //Category在外界使用的语法//1、引入分类所在的头文件。注意:分类对应的文件名,格式比较特殊!// 原始类类名 + 分类名.h 原始类类名 + 分类名.m//2、用原始类提供的方法创建对象//3、向这些对象发送新增的消息,如果是类方法,直接向原始类的类名发送消息!!! //原始类其实就是被扩展的类!!! //延展是类的扩展中常用的方法,主要是用来管理 本类的私有方法,这些方法不对外公开,外界访问不到,但是这些方法在类的内部能被使用。//定义延展的格式为:/** * 1、在自定义类的.m文件中,@implementation...@end上面,写本类的延展 2、@interface 本类名 () 延展方法1; 延展方法2; ... 延展方法n; @end 3、延展中的方法 放到本类的实现部分实现。 */@protocol MarryProtocol //协议 就是一堆方法的声明//其中协议方法分为 必须实现(@required) 以及可选实现(@optional)//协议只有.h文件,协议中的方法 具体怎么实现 是由代理方实现的。 @required//必须实现 - (void)cookDinner;//做饭 - (void)washClothes;//洗衣服 - (void)makeMoney;//挣钱 - (void)doHousework;//做家务 protocol MarryProtocol //协议 就是一堆方法的声明//其中协议方法分为 必须实现(@required) 以及可选实现(@optional)//协议只有.h文件,协议中的方法 具体怎么实现 是由代理方实现的。 @required//必须实现 - (void)cookDinner;//做饭 - (void)washClothes;//洗衣服 - (void)makeMoney;//挣钱 - (void)doHousework;//做家务 @optional//可选实现 - (void)takecareBaby;//照看孩子 @end@optional//可选实现 - (void)takecareBaby;//照看孩子 @end
ios元类 代码区 ios元类的作用
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章