Swift动态获取成员变量及对象关联
来源:互联网 发布:淘宝女装推荐 编辑:程序博客网 时间:2024/05/16 17:51
1.动态获取成员变量,以tabBarItem.badgeValue为例,由于Oc中的写法和Swift中的写法类似,这里就不写Oc的Demo了
self.tabBarItem.badgeValue = "10"//拿到显示badgeValue的控件//1拿到tabbarfor tabBarChild in self.tabBarController!.tabBar.subviews { //拿到UITabBarButton if tabBarChild.isKindOfClass(NSClassFromString("UITabBarButton")!) { for tabBarButtonChild in tabBarChild.subviews { //拿到_UIBadgeView if tabBarButtonChild.isKindOfClass(NSClassFromString("_UIBadgeView")!) { for badgeViewChild in tabBarButtonChild.subviews { if badgeViewChild.isKindOfClass(NSClassFromString("_UIBadgeBackground")!) { printLog("哈哈,终于拿到你了")// badgeViewChild.backgroundColor = UIColor.orangeColor() var count: UInt32 = 0 //获取到类身上的实例变量,也叫成员变量 let ivars = class_copyIvarList(NSClassFromString("_UIBadgeBackground"), &count) for i in 0..<count { //取某一个实例变量 let ivar = ivars[Int(i)] //获取ivar的名称 let ivarName = NSString(CString: ivar_getName(ivar), encoding: NSUTF8StringEncoding) //获取ivar的类型 let ivarType = NSString(CString: ivar_getTypeEncoding(ivar), encoding: NSUTF8StringEncoding) printLog("name=\(ivarName);;type=\(ivarType)") if ivarName!.isEqualToString("_image") { badgeViewChild.setValue(UIImage(named: "main_badge"), forKeyPath: (ivarName! as String)) } } } } } } }}
2.1Swift写法
*对象关联:把一个对象A通过一个key关联到对象B身上去.而我们要从B身上取这个对象的话,就可以通过这个key //定义一个对象关联的key private var TABBAR_INDEX_KEY = UnsafePointer<Void>() *存:objc_setAssociatedObject(item, &TABBAR_INDEX_KEY, NSNumber(integer: index), objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) *取:let result = objc_getAssociatedObject(item, &TABBAR_INDEX_KEY)2.2Oc中的写法
Oc中需要导入头文件,在设置一个字符串就可以了
#import <objc/runtime.h> objc_setAssociatedObject(self, @"hehe", [NSNumber numberWithInt:1], OBJC_ASSOCIATION_ASSIGN); objc_getAssociatedObject(self, @"hehe");
0 0
- Swift动态获取成员变量及对象关联
- 运行时 动态获取成员变量
- C++对象模型(获取成员变量)
- ios 获取AppDelegate对象的成员变量
- swift extension 关联变量
- 控件关联成员变量
- 通过反射获取构造方法,成员变量及成员方法
- 常成员变量、常成员函数及常对象
- [Python]获取类的成员变量及临时变量
- 通过反射获取类对象的成员函数、成员变量(只获取成员函数)、构造函数
- Runtime – 获取成员变量、值、动态创建类
- Java面向对象 多态动态绑定(非静态成员函数、成员变量、静态成员函数)
- 通过Java反射机制获取对象、方法和成员变量
- runtime获取查看内部成员变量(OC和Swift两种方法获取)
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
- 获取成员变量类型
- 面向对象(成员变量)
- 类加载及对象 成员变量初始化顺序
- NetBeans8.0.1启动tomcat7失败,办法提供。
- 用C语言打印图形&C语言注释符
- 杭电1085
- 黑马程序员——Java基本语法
- ifndef/define/endif作用和用法
- Swift动态获取成员变量及对象关联
- 关于lol伤害计算
- maven profile介绍
- UVa 10534 Wavio Sequence
- 【深度学习】在Caffe中配置神经网络的每一层结构
- C语言中的数据类型&常量
- Unity3D 虚拟摇杆 Easy Touch
- C#打印技术(三)
- jiebaR中文分词,并做词云(R语言)