代码改变世界

Associative References(关联引用)

2017-11-10 14:51  dengchaojie_learner  阅读(181)  评论(0编辑  收藏  举报

Category中使用关联引用来添加property

category是不能创建实例变量的,但我们可以通过关联引用来达到这样的目的。特别是当你不持有这个类,比如说系统的类,而你又的确需要添加一个property。

static char objcAddress;

// 给对象_sub关联一个字符串属性objcAddress,并做赋值

objc_setAssociatedObject(_sub, &objcAddress, @"deng chao jie", OBJC_ASSOCIATION_COPY);

 

// 获取对象_sub关联的属性值

id object = objc_getAssociatedObject(_sub, &objcAddress);

 

// 移除对象_sub关联的objcAddress的属性

objc_setAssociatedObject(array, &objcAddress, nil, OBJC_ASSOCIATION_ASSIGN);

 

// 移除对象_sub关联的所有属性

objc_removeAssociatedObjects(_sub);

 

 

http://gracelancy.com/blog/2013/05/22/objective-c-associative-references-part2/

http://gracelancy.com/blog/2012/11/26/objective-c-associative-references/

应用的交互设计,都必须简洁简洁再简洁,less is more。