首页 > 其他 > 详细

论NSString和NSMutableString 属性声明中copy/retain区别

时间:2017-12-06 19:28:00      阅读:254      评论:0      收藏:0      [点我收藏+]

 

直接上代码

1.先声明要测试的属性

技术分享图片

2.NSMutableString进行赋值

技术分享图片

----我们打印出oldMStr地址和在不同赋值之后它的引用计数,看看到底有什么变化。最后我们打出这4个属性的具体的值和地址,看看地址和值有什么变化

技术分享图片

-----从打印的结果中我们可以看出retain属性值的地址和原oldMStr地址相同,再看看oldMStr的引用计数,说明retain属性值的为浅复制。再看看copy属性值的情况,地址都改变了同时oldMStr的引用计数没法发生变化,当oldMStr值发生变化后,copy属性值的属性 值没有发生变化,由此可以断定copy为深复制

3.NSString进行赋值

技术分享图片

技术分享图片

-----用NSString进行赋值,所有属性的值为第一次赋值的值。再看看oldStr的地址,引用计数。不难发现oldStr的地址在赋值的时候发生改变,变到文字常量区去了。再看看引用计数-1.再联系到oldStr地址为文字常量区那么就不难解释这个问题了。

论NSString和NSMutableString 属性声明中copy/retain区别

原文:http://www.cnblogs.com/banzhuangong/p/7993920.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!