定义: runTime 直接翻译就是运行时,他是一套比较底层的C语言API。
他是OC的幕后工作者,在运行过程时,都会转换为runTime的C语言代码。
作用:获取类的全部成员变量也就是属性列表.H.M都可以获取到私有的也不例外
unsigned int count;
Ivar *ivar = class_copyIvarList([ClassName class] ) // 成员变量列表
class_copyPropertyList // 属性列表
class_copyMethodList //方法列表
class_copyProtocolList //协议列表
动态地为某个类添加属性\方法, 修改属性值\方法
遍历一个类的所有成员变量(属性)\所有方法
1.归档(也称对象序列化)就是通过某种格式把对象保存到本地文件,以便以后读回该对象的内容
2.解档(也称读档)就是把归档的对象文件读成原来的对象的过程
NSCoding协议
//归档方法
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.sex forKey:@"sex"];
[aCoder encodeInteger:self.age forKey:@"age"];
}
//反归档方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.sex = [aDecoder decodeObjectForKey:@"sex"];
self.age = [aDecoder decodeIntegerForKey:@"age"];
}
return self;
}
我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置