objc_setAssociatedObject 、objc_g
2016-06-12 本文已影响184人
json_jie
关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。
使用关联,我们可以不用修改类的定义而为其对象增加存储空间 (category)添加属性
关联是基于关键字的,因此,我们可以为任何对象增加任意多的关联,每个都使用不同的关键字即可。关联是可以保证被关联的对象在关联对象的整个生命周期都是可用的
//获取关联对象
//源对象 关键字
- (NSIndexPath *)currentIndexPath {
NSIndexPath *indexPath = objc_getAssociatedObject(self, @"22");
return indexPath;
}
//动态关联
//源对象,关键字,关联的对象和一个关联策略 - (void)setCurrentIndexPath:(NSIndexPath *)currentIndexPath {
objc_setAssociatedObject(self, @"22", currentIndexPath, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}