深浅copy

2018-03-22  本文已影响0人  上尉H借个火

概念:
浅拷贝:不拷贝对象,只拷贝对象指针,因此不会产生新的对象。
深拷贝:拷贝对象到新的内存,因此会产生新的对象。

示例:

    NSString *string = [[NSString alloc] init];
    NSString *s1 = [string copy];
    NSString *s2 = [string mutableCopy];
    NSLog(@"string==%p, s1--%p, s2==%p", string, s1, s2);

   结果:string==0x100fa6320, s1--0x100fa6320, s2==0x604000257b80

    NSMutableString *str = [[NSMutableString alloc] init];
    NSMutableString *str1 = [str copy];
    NSMutableString *str2 = [str mutableCopy];
    NSLog(@"str--%p, str1--%p, str2==%p", str, str1, str2);

   结果: str--0x604000258060, str1--0x101eb0030, str2==0x604000258150
结论 mutableCopy copy
可变对象 深拷贝 深拷贝
不可变对象 深拷贝 浅拷贝

然后我们再来看copy关键字的特点:
修改源对象的属性和行为,不会影响副本对象
修改副本对象的属性和行为,不会影响源对象

上一篇 下一篇

猜你喜欢

热点阅读