天天看点

Objective-C:分类(Category、extension)

分类(Category 、Extension)

(一)分类的划分

  (2) 1、(命名的类别)类别Category:只能添加新的方法,不能添加新变量。

       2、(未命名的类别)类的扩展Extension://扩展一般直接写在类的实现文件中

                                       //扩展中定义的都是类中私有的实例变量和方法       

(二)分类的使用

(1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量

(2)在分类方法的实现中可以访问原来类中的成员变量;

(3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告);

(4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;

(5)在很多的情况下,往往是给系统自带的类添加分类,如NSObject和NSString,因为有的时候,系统类可能并不能满足我们的要求。

(6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。

 //自定义的字符串类String

Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)

//单独的类扩展文件

Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)

//类别文件

Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)

//主函数测试

Objective-C:分类(Category、extension)
Objective-C:分类(Category、extension)

//运行结果

Objective-C:分类(Category、extension)

2015-08-12 15:24:06.281 类别[1304:75695] string is runing

2015-08-12 15:24:06.282 类别[1304:75695] xiayuan

2015-08-12 15:24:06.282 类别[1304:75695] a = 7

2015-08-12 15:24:06.282 类别[1304:75695] b = 7

Program ended with exit code: 0

Objective-C:分类(Category、extension)

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4724612.html,如需转载请自行联系原作者

继续阅读