iOS

深拷贝||浅拷贝

2018-01-10  本文已影响0人  兔子547

浅拷贝:就是在已经有一块内存空间了(存储数据的),有一个指向这个空间的指针a,来修改这个空间内容,浅拷贝这个指针的意思就是在这个内存空间添加一个指针b,用来修改这个空间的值,b修改内存空间的值之后,当a访问这个内存空间的时候也跟着改变。

深拷贝:就是在已经有一块内存空间了(存储数据的),有一个指向这个空间的指针a,来修改这个空间内容,深拷贝这个指针的意思就是创建一个新的的内存空间(指针b)把之前内存空间的里面的属性复制,b修改内对应存空间的值之后,当a访问他自己对应的内存空间的里面的值所以不改变。

iOS的浅拷贝 NSString  NSArray  等不可变的的 “=”  “copy” 地址不改变

对象的自定义浅拷贝


-(id)copyWithZone:(NSZone*)zone{

    NSObject *object = [[self class] allocWithZone:zone];

    object.name = self.name;

    object.age = [self.age copy];

    return object;

}


iOS的深拷贝 NSString   实用“mutableCopy”  还有 NSMutableString  NSMutableArray  等不可变的的 “mutableCopy”  “copy” 地址改变

对象的自定义深拷贝

-(id)copyWithZone:(NSZone*)zone{

    NSObject *object = [[self class] allocWithZone:zone];

    object.name = [NSString stringWithFormat:@"%@",self.name];

    object.age = [self.age mutableCopy];

   return object;

}

上一篇 下一篇

猜你喜欢

热点阅读