最近写了一个小工具库,分类中添加的属性自动生成setter和getter并绑定ivar。平时我们要想实现给分类添加属性,需要用到runtime的两个apiobjc_setAssociatedObject
和objc_getAssociatedObject
。导入我写的工具库后(拖入工程即可,无需#import),在.h文件写好属性后,给需要自动合成的属性在.m文件用@dynamic
标记一下即可。用法如下:
@interface NSObject (category)
@property (nonatomic, strong) id cate_obj;
@property (nonatomic, assign) int cate_number;
@end
@implementation NSObject (category)
@dynamic cate_obj, cate_number;
@end
然后就可以正常使用了。
目前支持的属性关键字有: assign
,strong
,weak
,atomic
,nonatomic
支持的属性类型:
1、int
,float
等基本数据类型
2、任何oc对象类型
3、char *
,void *
指针类型
4、oc中定义的结构体,CGRect
,CGSize
,CGPoint
, CGVector
, CGAffineTransform
, CATransform3D
,NSRange
, UIOffset
, UIEdgeInsets
,不支持自定义的结构体和联合体。
下载地址:传送门,将AutoProperty目录下文件拖入到工程即可。
网友评论