杜集区政府网,安徽医生被砍死,小型摇床
1> 添加关联对象
void objc_setassociatedobject(id object, const void * key,
id value, objc_associationpolicy policy)
2> 获得关联对象
id objc_getassociatedobject(id object, const void * key)
3> 移除所有的关联对象
void objc_removeassociatedobjects(id object)
假如已经有一个 xgperson的类,现在我们需要扩展这个类,并且添加一个 age 属性
#import "xgperson.h" // 分类属性是不会生成 get\set 方法的,如果不重写这两个方法,就无法正常使用属性 @interface xgperson (test) @property (nonatomic,assign) int age; @end
#import "xgperson+test.h" #import <objc/runtime.h> @implementation xgperson (test) - (void)setage:(int)age{ // @selector(age) 这个参数只要传一个地址指针就可以 objc_setassociatedobject(self, @selector(age), @(age), objc_association_assign); } - (int)age{ // 隐式参数 // _cmd = @selectior(age) return [objc_getassociatedobject(self, _cmd) intvalue]; }
调用:
xgperson* p1 = [[xgperson alloc]init]; p1.name = @"p1"; p1.age = 18; xgperson* p2 = [[xgperson alloc]init]; p2.name = @"p2"; p2.age = 20; nslog(@"p1name:%@ p1age:%i----p2name:%@ p2age:%i",p1.name,p1.age,p2.name,p2.age);
输出:
2018-11-29 14:20:38.666084+0800 关联对象(增加分类属性)[1923:87124] p1name:p1 p1age:18----p2name:p2 p2age:20
associationsmanager
associationshashmap
objectassociationmap
objcassociation
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能
网友评论