IOS中的关联对象实现objc_setAssociatedObject
来源:互联网 发布:jquery 定义对象数组 编辑:程序博客网 时间:2024/06/07 11:57
用xib做界面时常用到bind to object这个功能
这样做的好处是,对象绑定控件后,对象值发生改变,无需手动刷新即可操作界面刷新,但是用代码写的控件如何实现这个功能呢
除了通知的方式外,可以用runtime机制里面的关联对象实现同样的效果,如下:
objc_setAssociatedObject(goods, [@"cart"UTF8String], putBtn,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
上面这段代码是我将一个按钮putBtn关联到一个商品goods对象,这个按钮的enable状态根据goods的一个Bool属性cart改变,接着,我重写一下goods的setCart方法
- (void)setCart:(BOOL)crt{
cart = crt;
UIButton *associatedButton =objc_getAssociatedObject(self,[@"cart"UTF8String]);
if(associatedButton){
[associatedButtonsetEnabled:!crt];
}
}
所有改变cart值的入口都在这,我在此检测下是否有关联的控件,如果有,操作控件的状态发生改变,这样就实现了上述xib中的效果
1 0
- IOS中的关联对象实现objc_setAssociatedObject
- iOS关联(objc_setAssociatedObject)
- iOS关联,objc_getAssociatedObject, objc_setAssociatedObject
- iOS中关联对象的简单使用(objc_setAssociatedObject)
- 【iOS开发技术】对象关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- iOS中关联对象的简单使用(objc_setAssociatedObject)
- 【iOS开发技术】对象关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- iOS中关联对象的简单使用objc_setAssociatedObject
- iOS中关联对象的简单使用objc_setAssociatedObject
- OC对象关联~objc_setAssociatedObject/objc_getAssociatedObject
- iOS-关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- iOS中的关联对象
- 对象关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- [IOS] 关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- IOS学习 关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObject)
- 关联 objc_setAssociatedObject
- objc_setAssociatedObject关联
- objc_setAssociatedObject关联
- 【转】8家公司笔面试经历-百度-联发科-瑞晟--
- PAT 1027 Colors in Mars
- java 常用基本数据类型的默认值
- Android读取SD卡数据
- UBOOT分析一
- IOS中的关联对象实现objc_setAssociatedObject
- 处理phonegap(cordova) application error the connection to the server was unsuccessful的错误
- KNN算法理解
- Fifa15coins4u.com promise for delivery is within 10mins.
- EGOCache如何检测缓存时间过期
- UVa 10474 Where is the Marble?
- 根据圆的面积公式计算圆周率
- 安卓获取手机屏幕尺寸、密度
- Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。