直接上代码
1.先声明要测试的属性
2.NSMutableString进行赋值
----我们打印出oldMStr地址和在不同赋值之后它的引用计数,看看到底有什么变化。最后我们打出这4个属性的具体的值和地址,看看地址和值有什么变化
-----从打印的结果中我们可以看出retain属性值的地址和原oldMStr地址相同,再看看oldMStr的引用计数,说明retain属性值的为浅复制。再看看copy属性值的情况,地址都改变了同时oldMStr的引用计数没法发生变化,当oldMStr值发生变化后,copy属性值的属性 值没有发生变化,由此可以断定copy为深复制
3.NSString进行赋值
-----用NSString进行赋值,所有属性的值为第一次赋值的值。再看看oldStr的地址,引用计数。不难发现oldStr的地址在赋值的时候发生改变,变到文字常量区去了。再看看引用计数-1.再联系到oldStr地址为文字常量区那么就不难解释这个问题了。
时间: 2024-10-16 08:09:02