天天看点

iOS - OC Category 分类1、Category2、向分类中添加方法3、向分类中添加属性

1)分类/类别(category):

允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量)。用以扩展自己或他人以前实现的类,使它适合自己的需要。

分类的名称括在类名之后的一对圆括号 "( )" 中。

分类文件名使用符号“+”来分隔类和分类的名字(Xcode 会自动生成)。

分类用它可以将类的定义模块化到相关方法的组或分类中。它还提供了扩展现有类定义的简便方式,并且不必访问类的源代码,也无需创建子类。

分类可以覆写该类中的另一个方法,但是通常认为这种做法是拙劣的设计习惯。一个类可以拥有多个分类。使用分类添加新方法来扩展类不仅会影响这个类,同时也会影响它的所有子类。分类为现有类添加新方法可能对你有用,但它们可能和该类的原始设计或意图不一致。对象/分类命名对必须是唯一的。

2)分类中添加属性(实例变量):

iOS 开发中,分类默认不允许添加属性。

但是如果在自己开发的框架中,希望在分类中动态添加属性,可以通过 OC 运行时的关联对象功能添加。在分类中,定义一个属性时,需要自己实现 getter &amp; setter 方法,而且没有 <code>_成员变量</code>。

运行时非常重要的一个应用:给分类动态添加属性,结果能够让框架包装的更好,让使用者做出最小的修改。