OC 的 Runtime 动态获取对象属性
来源:互联网 发布:知名淘宝客 编辑:程序博客网 时间:2024/05/20 14:28
运行时是 OC 的核心,其特点就是程序在运行的时候,以发送消息的形式调用方法.
在实际开发中,关于运行时方面的运用点,其实并不多,最常用的也无非是动态获取对象的属性.
示例:
1.新建一个继承自NSObject 的对象,在. h 文件声明2个属性
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) NSInteger age;
@end
2.新建一个 NSObject 的类别
.h 文件
#import <Foundation/Foundation.h>
@interface NSObject (Runtime)
+(NSArray*)zyfObjProperties;
@end
.m 文件
#import "NSObject+Runtime.h"
#import <objc/runtime.h>
@implementation NSObject (Runtime)
+(NSArray *)zyfObjProperties{
//调用运行时方法,取得类的属性列表
//Ivar 成员变量
//Method 方法
//Property 属性
//Protocol 协议
unsigned int count =0;
objc_property_t *proList = class_copyPropertyList([self class], &count);
NSMutableArray *mArr = [NSMutableArrayarray];
for (unsignedint i = 0; i < count; i++) {
//从数组中取得属性
objc_property_t pty = proList[i];
//从中获得属性名称
const char *cName =property_getName(pty);
NSString *name = [NSStringstringWithCString:cName encoding:NSUTF8StringEncoding];
[mArr addObject:name];
}
NSLog(@"属性的个数 %d", count);
free(proList);
return mArr.copy;
}
@end
3.导入新建的类和分类,然后调用
NSArray *properties = [PersonzyfObjProperties];
NSLog(@"%@",properties);
注意, c语言的 copy 后,需要释放,oc 在运行时是不会对 c 做自动内存管理的.
- OC 的 Runtime 动态获取对象属性
- Runtime获取对象隐藏的属性
- runtime获取OC内部类隐藏属性
- FMDB封装,用OC方法存储model,不用写SQL语句。使用runtime获取对象属性
- iOS runtime 学习之类的属性动态获取(一)
- Runtime之动态获取属性列表
- OC运行时获取对象的所有属性、所有方法
- RunTime 获取对象属性和方法
- runtime获取对象属性及方法列表
- runtime - 属性的动态挂载
- OC 利用runtime获得类的属性和方法名字
- oc runtime动态调用方法
- iOS开发------runtime关联对象(动态添加属性)
- hibernate动态绑定查询,获取对象的private属性
- Python:动态获取对象的属性和方法
- python动态获取对象的属性和方法
- python动态获取对象的属性和方法
- python动态获取对象的属性和方法
- 从小白到大数据人工智能专家的学习历程-送100G学习资料
- python 初步认识弱引用 & 垃圾回收
- 360内部监控系统"Wonder实践之路"
- 美团二面关于计算机网络的问题
- 选择性的暴露业务字段
- OC 的 Runtime 动态获取对象属性
- 卸载pip的方法
- Golang:无惧makefile
- 我所理解的K8S(有彩蛋哦~)
- 如何在K8S上玩转TensorFlow ?
- Python类和对象的入门级讲解(简单粗暴)
- 如何优雅的升级内核?
- 当LSM遇上SSD
- linux---eigen安装