Runtime关联引用
来源:互联网 发布:wps苹果mac版 编辑:程序博客网 时间:2024/05/17 03:15
当我们在开发过程中对系统类扩展时,会发现无法扩展属性。如果想扩展属性,可使用Runtime扩展。
1 相关方法
其中涉及到的Runtime方法有如下三个。
/// 设置值////// - parameter object : self/// - parameter key : 属性/// - parameter value : 值/// - parameter policy : 存储策略objc_AssociationPolicy////// - returns: voidpublic func objc_setAssociatedObject(object: AnyObject!, _ key: UnsafePointer<Void>, _ value: AnyObject!, _ policy: objc_AssociationPolicy)/// 获取值////// - parameter object : self/// - parameter key : 属性////// - returns: AnyObjectpublic func objc_getAssociatedObject(object: AnyObject!, _ key: UnsafePointer<Void>) -> AnyObject!/// 去掉所有管理属性////// - parameter object : self////// - returns: voidpublic func objc_removeAssociatedObjects(object: AnyObject!)
2 实战演练
2.1 扩展属性
下面为YJUser扩展name属性。
//// YJUser.swift// Runtime//// CSDN:http://blog.csdn.net/y550918116j// GitHub:https://github.com/937447974/Blog//// Created by yangjun on 16/1/11.// Copyright © 2016年 阳君. All rights reserved.//import Cocoa/// 用户class YJUser: NSObject {}/// 扩展extension YJUser { /// 用户名 var name: String { get { return objc_getAssociatedObject(self, "extensionName") as! String } set { objc_setAssociatedObject(self, "extensionName", newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY) } } /// 清空所有关联属性 /// /// - returns: void func cleanParameter() { // 此时再获取关联属性的值,会报错 objc_removeAssociatedObjects(self) }}
2.2 测试
//// main.swift// Runtime//// CSDN:http://blog.csdn.net/y550918116j// GitHub:https://github.com/937447974/Blog//// Created by yangjun on 16/1/11.// Copyright © 2016年 阳君. All rights reserved.//import Foundationlet user = YJUser()user.name = "阳君"print(user.name)user.cleanParameter()print(user.name)
Appendix
Sample Code
Runtime
Related Documentation
Objective-C Runtime Reference
Revision History
Copyright
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog
0 0
- Runtime关联引用
- runtime之关联引用
- runtime 关联
- 关联引用
- 关联引用
- runtime 关联属性
- runtime关联属性
- runTime之属性关联
- runtime中的关联使用方式
- runtime 关联对象的使用
- iOS 利用runtime关联对象
- Runtime实现动态关联对象
- 关联增加属性runtime.h
- Runtime之关联对象简述
- Objective-C关联引用
- Objective-C关联引用
- 关联引用的使用方法
- 浅析关联引用
- ViewTreeObserver简介
- HTML5基本页面样式
- javascript设置iframe里子窗口全屏
- Ubuntu虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)
- 屏蔽关机全屏应用在recent列表中显示
- Runtime关联引用
- Java(.NET)经典排序算法之冒泡排序
- RxAndroid 应用(四)(简易天气App之RxBus)
- CDI进阶第四步 自定义注解验证
- Activity非正常销毁后重新创建问题
- zookeeper 安装部署
- 【SQL 编程你也行】SQL Server新功能之函数:count函数(2012、2014的over partition by order by rows/range between)
- IOS 百度地图API
- ubuntu环境下重新编译内核