iOS——Category
什么是Category
Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择。新添加的方法同样也会被被扩展的类的所有子类自动继承。当知道已有类中某个方法有BUG,但是这个类是以库的形式存在的,我们无法直接修改源代码的时候,Category也可以用于替代这个已有类中某个方法的实体,从而达到修复BUG的目的。然而却没有什么便捷的途径可以去调用已有类中原有的那个被替换掉方法实体了。需要注意的是,当准备有Category来替换某一个方法的时候,一定要保证实现原来方法的所有功能,否则这种替代就是没有意义而且会引起新的BUG。和子类不同的是,Category不能用于向被扩展类添加实例变量。Category通常作为一种组织框架代码的工具来使用。 举个例子:简单来说假如我们需要实现自定义button的话,需要新建一个继承于UIButton的类,并在创建UIButton时,直接创建新建的这个Button类,然后我们可以在这个新的Button类里添加成员变量以及方法等等。而分类(Category),像是一个削弱版的新建类,在这个分类里只能去添加方法不能添加成员变量。分类的好处就是只要引入了这个分类,只要是UIButton就能使用这个分类添加的方法了。
Category的用法
在我们的项目里创建新的File:
选择Objective-C File:
File:就是新的分类的名字 File Type:选择Category Class:就是谁将使用这个分类,就写谁,假如是给UIButton添加分类就写UIButton,假如是给UILabel添加分类就写UILabel。
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIButton (ButtonMethod)
@end
NS_ASSUME_NONNULL_END
这样就创建好了 想加什么方法就可以直接加进去了,比如加了类方法,调用时只要[UIButton 类方法]就可以了
|