使用場景
比如兩個控制器之間使用數據模型傳值時,在B控制器中更改模型的值,而不改變A控制器中模型的值.此時就需要將數據模型copy 一份 再將值傳給B控制器.
而copy模型 要遵循NSCopying 協議. 那么就可以用到下面這種寫法
一般的寫法是每個屬性 挨個賦值?
比如 :
Model* model = [[Model allocWithZone:zone]init];
model.name = self.name;
model.age = self.age;
return model;
runtime 實現
- (id)copyWithZone:(NSZone*)zone{
GXBaseInfoModel* model = [[GXBaseInfoModelallocWithZone:zone]init];
unsignedintoutCount =0;
Ivar* ivars =class_copyIvarList([selfclass], &outCount);
for(inti =0; i < outCount; i++)
{
Ivarivar = ivars[i];
idobj =object_getIvar(self, ivar);
object_setIvar(model, ivar, obj);
}
free(ivars);
returnmodel;
}