gpt4 book ai didi

ios - 为什么nstring obj的内存地址和iOS dev中复制的不一样?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:31:55 24 4
gpt4 key购买 nike

     NSString * str1 = @"haha";
NSString * str2 = [str1 copy];
str1 = @"laa";
NSLog(@"str1的地址为:%p", str1);
NSLog(@"str2的地址为:%p", str2);
NSLog(@"str1的值为:%@", str1);
NSLog(@"str2的值为:%@", str2);

如上代码,它们的内存地址不同。但是如果我删除第三行,它们的内存地址是相同的。能告诉我原因吗?我找了很久,谢谢

最佳答案

这是由于优化。在 iOS 上,每个唯一的字符串在内存中只存在一次——永远只有一个 haha NSString,无论你有多少次引用它,或者你在哪里创建它。但是在第三行中,您更改了原始字符串,而副本保持不变。因此,您现在有两个唯一的字符串。

关于ios - 为什么nstring obj的内存地址和iOS dev中复制的不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46032946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com