copy和mulcopy

1.字符串的内存

   NSString*string11 =@"1";

    NSString*string22 =@"1";

    NSArray*arr11 =@[@"1"];

    NSArray*arr22 =@[@"1"];

string11:0x107e7d108;string22:0x107e7d108--arr11:0x107e7d108;arr22:0x107e7d108

可以看到虽然这是四个对象,但是由于字符串的优化其内存地址是一样的

2.copy

1.不可变类型的copy

NSString*string1 =@"haha";

 NSString*string2 = [string1 copy];

string1:0x10a1010f8,string2:0x10a1010f8

2.可变类型的copy

 NSMutableString *mString1 = [NSMutableString stringWithString:@"hehe"];

NSString*mString2 = [mString1 copy];

mString1:0x60000024e160,mString2:0xa000000656865684

结论copy对于不可变类型是浅拷贝,对于可变类型是深拷贝且可变类型变为不可变类型

3.mulcopy

1.不可变类型的mulcopy

 NSString *string1 = @"haha";

NSMutableString *string3 = [string1 mutableCopy];

[string3 appendString:@"hehe"]; //注意string3变为可变数组

string1:0x1005070f8,string3:0x604000048940

2.可变类型的mulcopy

NSMutableString *mString1 = [NSMutableString stringWithString:@"hehe"];

  NSMutableString*mString3 = [mString1mutableCopy];

   [mString3 appendString:@"haha"];

mString1:0x60000044bf10,mString3:0x60000044c030

结论,mulcopy的结果是mulcopy类型,且都是深拷贝

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容