iOS Runtime 使用

使用runtime 首先需要导入 #import<objc/ runtime.h>

runtime拷贝

objc_setAssociatedObject(button, @"arr", array[i][@"childmenu"], OBJC_ASSOCIATION_COPY);

这段代码告诉我们是以button对象为基础  key是arr。value是array[i][@"childmenu"]

所以

取值

NSArray *arr = objc_getAssociatedObject(button, @"arr");

就是这样。

runtime 扩展  

例如百度地图 标注 我们需要添加一个参数

众所周知 BMKShape 是标注 属性类 里面有 title subtitle 俩个参数,我们不够用怎么办,需要这个时候需要创建以个分类Category;

BMKShape+MapAnnotation.h

@property (nonatomic,copy) NSString *addres;

BMKShape+MapAnnotation.m

char* const newdituaddres = "addres"; //声明一个char *类型的指针变量,指针指向了“addres”这个字符串


-(void)setAddres:(NSString *)addres{

objc_setAssociatedObject(self,newdituaddres,addres,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

-(NSString *)addres{

return objc_getAssociatedObject(self,newdituaddres);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容