Category是指Objective-C中的类别也叫分类,是一种不需要继承即可给已有且无法修改的类添加新方法的语法技术。
Category利用Objective-C的动态运行时分配机制(Runtime),主要作用是为现有的类(自己的或系统的或三方库的)添加新方法。
Category可以为任何已有的类添加新的方法,包括那些没有源代码、只能使用、无法修改的类。
Category的设计原则
Category 的实现可以依赖主类,但主类一定不依赖 Category,也就是说移除任何一个 Category 的代码不会对主类产生任何影响。
Category 可以直接使用主类已有的私有成员变量,但不应该为实现 Category 而往主类中添加成员变量。
所以Category的设计一定是简单的插拔使用,就像买个机械键盘来扩展MacBook的键盘,插了就能用,拔了MacBook也不会受到任何影响。
Category添加方法
Category添加方法是最常用也是最主要、最重要的使用方式。
第一步:我们要新建一个文件。
命名时应该加上大写前缀。
第二步:为这个Category添加方法。
注意:Category方法最好不要和类原有的方法重名,运行时会优先调用Category中的同名方法,也就是Category方法会覆盖掉类中原有的方法,这是不好的,因为Category本意为添加新的方法而不是重写。
所以Category方法在命名时,例如:小写前缀_方法名称 - zoc_viewLog。