NSString *str1 = @"str1";
NSString *str2 = [str1 copy];
str1 = @"asdf";
NSLog(@"\nstr1 = %@ str1P = %p \n str2 = %@ str2P = %p", str1, str1, str2, str2);
/*输出结果,修改str2 同理
str1 = asdf str1P = 0x10776b1a0
str2 = str1 str2P = 0x10776b180
*/
这两个地址指向的地址相同是因为,@"str1"内容是在常量区开辟的内存,两个指针都指向这个区域,str1值改变后,str1不再指向@"str1"值的内存地址,而str2依然指向的是@"str1"值的内存地址。