运行机制归档
2016-04-16 21:39
381 查看
- (void)encodeWithCoder:(NSCoder *)aCoder {
unsigned
int count;
//获得指向当前类的所有属性的指针
objc_property_t *properties =
class_copyPropertyList([self
class], &count);
for (int i =
0; i < count; i++) {
//获取指向当前类的一个属性的指针
objc_property_t property = properties[i];
//获取C字符串属性名
const
char *name = property_getName(property);
//C字符串转OC字符串
NSString *propertyName = [NSString
stringWithUTF8String:name];
NSLog(@"=====iii==%@",propertyName);
//通过关键词取值
NSString *propertyValue = [self
valueForKey:propertyName];
NSLog(@"===rr==iii==%@",propertyValue);
//编码属性
[aCoder encodeObject:propertyValue
forKey:propertyName];
}
//记得释放
free(properties);
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
unsigned
int count;
//获得指向当前类的所有属性的指针
objc_property_t *properties =
class_copyPropertyList([self
class], &count);
for (int i =
0; i < count; i++) {
//获取指向当前类的一个属性的指针
objc_property_t property = properties[i];
//获取C字符串属性名
const
char *name = property_getName(property);
//C字符串转OC字符串
NSString *propertyName = [NSString
stringWithUTF8String:name];
//解码属性值
NSString *propertyValue = [aDecoder
decodeObjectForKey:propertyName];
[self
setValue:propertyValue
forKey:propertyName];
}
//记得释放
free(properties);
return
self;
}
unsigned
int count;
//获得指向当前类的所有属性的指针
objc_property_t *properties =
class_copyPropertyList([self
class], &count);
for (int i =
0; i < count; i++) {
//获取指向当前类的一个属性的指针
objc_property_t property = properties[i];
//获取C字符串属性名
const
char *name = property_getName(property);
//C字符串转OC字符串
NSString *propertyName = [NSString
stringWithUTF8String:name];
NSLog(@"=====iii==%@",propertyName);
//通过关键词取值
NSString *propertyValue = [self
valueForKey:propertyName];
NSLog(@"===rr==iii==%@",propertyValue);
//编码属性
[aCoder encodeObject:propertyValue
forKey:propertyName];
}
//记得释放
free(properties);
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
unsigned
int count;
//获得指向当前类的所有属性的指针
objc_property_t *properties =
class_copyPropertyList([self
class], &count);
for (int i =
0; i < count; i++) {
//获取指向当前类的一个属性的指针
objc_property_t property = properties[i];
//获取C字符串属性名
const
char *name = property_getName(property);
//C字符串转OC字符串
NSString *propertyName = [NSString
stringWithUTF8String:name];
//解码属性值
NSString *propertyValue = [aDecoder
decodeObjectForKey:propertyName];
[self
setValue:propertyValue
forKey:propertyName];
}
//记得释放
free(properties);
return
self;
}
相关文章推荐
- hdu5666 BestCoder Round #80
- 基于Windows系统的VMWare Workstation及Linux-CentOS系统下载及安装最全ui详解关联
- eclipse在线安装svn插件
- 搭建Git本地服务器
- 【水水】HDU5665Lucky
- UVA 815 Flooded!
- mysql服务性能优化—my.cnf配置说明详解(16G内存)
- Android RGB颜色查询对照表
- 关于Android Studio import时出现cannot find settings.jar错误
- 在空白处点击,实现隐藏div(下拉菜单或其它弹框)的方法
- Drawable的应用整理
- 万能游戏框架
- Java 将泛型定义在方法上。
- POJ 2139 Six Degrees of Cowvin Bacon
- Nova and RabbitMQ
- c++中实例化对象的大小(转)
- ZOJ 2971 Give Me the Number
- 随机梯度下降和批量梯度下降的简单代码实现
- leetcode 73. Set Matrix Zeroes
- Linux下fdisk磁盘分区