NSString*str1=@"haha";NSString*str2=[str1copy];str1=@"laa";NSLog(@"str1的地址为:%p",str1);NSLog(@"str2的地址为:%p",str2);NSLog(@"str1的值为:%@",str1);NSLog(@"str2的值为:%@",str2);如上代码,它们的内存地址不同。但是如果我删除第三行,它们的内存地址是相同的。能告诉我原因吗?我找了很久,谢谢 最佳答案 这是由于优化。在iOS上,每个唯一的字符串在内存中只存在一次——永远只有一个hahaNS