分类/扩展

分类(category):(.h 与.m文件都有,它相当于一个类)
将一个复杂的类分成若干个模块儿,其中每个模块儿被称为一个分类,类的扩展与补充

分类的语法:
在主函数中,只能看到一个主类,不会看到分类(在主函数中只要将分类包含进头文件,而不用加主类头文件)
分类中不能定义成员变量或属性,只有方法
实用:给没有源代码的类添加分类,使得代码可读性更高,将其头文件import进去即可.

**分类文件命名: **主类名 + 分类名
作用:是降低耦合度

扩展(extension):
扩展是没有名字的分类,可以有属性与方法

使用的 两种形式:
**1. **单独写在一个.h文件中,扩展中的成员变量是私有的,属性和方法是公有的(在.m文件中还需要包含头文件)

-(void)showshow{
    //self.a = 90; //报错
    self.b = 90;
}

**2. **将扩展写在主类的.m文件中,此时扩展中的成员变量和属性、方法都是私有的如下:

@interface TRFraction ()//扩展写在主类的.m文件中时,其定义的所有内容均为私有的
@property int value;//私有的
-(void)extensionMethod1;//私有的
@end

扩展与分类的区别:
扩展没有.m文件
扩展可以有属性与方法,分类只有方法
名称:扩展是“-”例如:UIColor_myColor,分类是“+”,例如:UIColor+myColor,

与协议(protocol)的区别:协议可以被任何类采纳,但扩展只属于主类
注:那不在.h文件中声明的方法在.m文件中声明页是为私有的,那还分什么扩展
分类与扩展的区别

posted @ 2017-08-22 20:33  笑笑就好90  阅读(80)  评论(0编辑  收藏  举报