iOS中Category和Extension 原理详解

575 阅读1分钟

(一)Category

1、什么是Category?

category是Objective-C 2.0之后添加的语言特性,别人口中的分类、类别其实都是指的category。category的主要作用是为已经存在的类添加方法。除此之外,apple还推荐了category的另外两个使用场景。

可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处。

  • 可以减少单个文件的体积

  • 可以把不同的功能组织到不同的category里

  • 可以由多个开发者共同完成一个类

  • 可以按需加载想要的category

  • 声明私有方法

apple 的SDK中就大面积的使用了category这一特性。比如UIKit中的UIView。apple把不同的功能API进行了分类,这些分类包括UIViewGeometry、UIViewHierarchy、UIViewRendering等。

不过除了apple推荐的使用场景,广大开发者脑洞大开,还衍生出了category的其他几个使用场景:

  • 模拟多继承(另外可以模拟多继承的还有protocol)

  • 把framework的私有方法公开