这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
一. 如何创建类别
二. Category的作用
(1)扩展 方法 和 “类” 的方法
在.h文件中的方法
/* 从十六进制字符串获取颜色 */
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;
/** 将label的宽度调整到适应文本内容的最低值 */
- (void)adjustWidthToMin;
二. 扩展类的属性(结合runtime)
这个也是相当实用的,举个例子:我们如果要给所有UIButton都添加一个name属性,怎么破?这个时候Category又可以秀一下了(都是套路):
.h文件里定义并暴露属性
/** button的name */
@property (nonatomic,copy) NSString *name;
.m文件先导入<objc/runtime.h>
,然后处理set和get方法
static void *strKey = &strKey;
- (void)setName:(NSString *)name{
objc_setAssociatedObject(self, & strKey, name, OBJC_ASSOCIATION_COPY);
}
- (NSString *)name{
return objc_getAssociatedObject(self, &strKey);
}
然后就可以使用了