Runtime 动态添加属性
2016-05-04 15:30
232 查看
例如:某个类延展可以扩展方法,但是拓展不了属性,如果非要拓展属性只能用Runtime中的
category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
属性 其实就是get/set 方法。我们可以使用 objc_setAssociatedObject/objc_getAssociatedObject 实现 动态向类中添加 方法
例如:
在延展中添加一个timeInterval属性
我们需要在延展的.m文件中 动态的添加属性
这样我们在延展中动态的添加了一个属性
Swift版
category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
属性 其实就是get/set 方法。我们可以使用 objc_setAssociatedObject/objc_getAssociatedObject 实现 动态向类中添加 方法
例如:
在延展中添加一个timeInterval属性
我们需要在延展的.m文件中 动态的添加属性
这样我们在延展中动态的添加了一个属性
Swift版
/// 延时时间 public var timeInterval:NSTimeInterval { get{ if(objc_getAssociatedObject(self, &buttonDelayedTime) == nil){ objc_setAssociatedObject(self, &buttonDelayedTime, 0,.OBJC_ASSOCIATION_RETAIN_NONATOMIC) return 0 }else{ return objc_getAssociatedObject(self,&buttonDelayedTime).doubleValue } } set{ objc_setAssociatedObject(self, &buttonDelayedTime, newValue,.OBJC_ASSOCIATION_RETAIN_NONATOMIC) } }
相关文章推荐
- c++ getline(),get()函数笔记
- 字符串中去掉空格
- javascript继承
- [置顶] Android pdf解析方案
- java工程师成神之路-基础篇
- 常见电脑显示器分辨率及其比例
- 如何让Mac应用程序重置
- Debian Live 项目的剧变
- hibernate中的核心类和接口细节总结
- sql解释执行顺序
- spring加载bean实例化顺序
- 你的代码有重复吗?
- Java 记录java基本类型与Byte数组之间相互转换
- VS2010小知识点总结……
- memcached学习笔记1(windows 7 64bit 环境下安装memcached)
- Android自定义View(二)进阶
- hdu3466Proud Merchants
- Mac OS X
- 基于wsdl的测试数据自动生成技术
- Makefile好助手:pkgconfig