码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-06 19:42:03      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:mutable   nbsp   image   测试的   不同   解释   复制   logs   ble   

 

直接上代码

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区别

标签:mutable   nbsp   image   测试的   不同   解释   复制   logs   ble   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!