runtime讲解<二>

runtime的应用(1)

前面对runtime有了一个简单了解,可看了半天在应用在没什么用啊,那你就错了编码

啊,我想起来了,你前面不就要说应用吗,为毛等到如今,我还傻傻看完前一页,流量啊,其实我是来替网通作任务的spa

还记得归档解档吗,想一想就心碎的不行啊,那一大堆的=啊,有了runtime立刻心就热乎了指针

首先遵循NSCoding协议code

//归档
- (void)encodeWithCoder:(NSCoder *)aCoder
{
	unsigned int count;
	//得到指向当前类的全部属性的指针
	objc_property_t *propertys = class_copyPropertyList([Student class], &count);
	for (int i = 0;  i < count; i++) {
		//得到指向属性的指针
		objc_property_t property = propertys[i];
		
		const char *name = property_getName(property);
		
		NSString *properyName = [NSString stringWithUTF8String:name];
		
		
		//经过名称取值
		NSString *propertyValue = [self valueForKey:properyName];
		//编码属性
		[aCoder encodeObject:propertyValue forKey:properyName];
	}
	free(propertys);
}
//解档
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
	
	unsigned int count;
	//得到指向当前类的全部属性的指针
	objc_property_t *propertys = class_copyPropertyList([Student class], &count);
	for (int i = 0;  i < count; i++) {
		//得到指向属性的指针
		objc_property_t property = propertys[i];
		
		const char *name = property_getName(property);
		
		NSString *properyName = [NSString stringWithUTF8String:name];
		
		//解码属性值
		NSString *propertyValue = [aDecoder decodeObjectForKey:properyName];
		
		[self setValue:propertyValue forKey:properyName];

	}
   free(propertys);

	
	return self;
}
相关文章
相关标签/搜索