iphone开发内存管理之三──深拷贝和浅拷贝

news/2024/10/17 12:22:21/

在iphone程序中,属性合成中的retain/copy/assign有什么区别?

 

1)assign就不用说了,因为基本上是为简单数据类型准备的,原子类类型,例如CGPoint、CGFloat等,而不是NS对象们;

2)retain VS copy

  • copy: 建立一个索引计数为1的对象,然后释放旧对象
  • retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

Copy其实是建立了一个相同的对象,而retain不是:

比如一个NSString对象,地址为0×1111,内容为@”STR”

Copy到另外一个NSString之后,地址为0×2222,内容相同,新的对象retain为1,旧有对象没有变化

retain到另外一个NSString之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1

也就是说,retain是指针拷贝,copy是内容拷贝。

 

Objective-C中的copy和c++的一样分深拷贝和浅拷贝,怎样区分这两个对象呢?我的理解是:

   (1)深拷贝,就是新拷贝一块内存交给对象使用。

   (2)浅拷贝,就是觉得拷贝内存太浪费,直接给你我的地址吧,相当于retain。

 

3)怎么区分这两种对象呢?

    在Objective-C里面只有一种情况是浅拷贝,那就是不可变对象的copy,其它的都是深拷贝(包括不可变对象mutableCopy、可变对象的的copy和mutableCopy)。


http://www.ppmy.cn/news/662963.html

相关文章

iphone开发 内存管理

我一般喜欢在开发的最后阶段,才考虑内存管理 那么就需要好的工具,帮你定位,内存泄露的位置。 经过一段时间的研究,已经完美控制了内存的增长 1.通过查找alloc关键字,自己找出项目中需要释放的内存 2.可以通过instr…

【SpringBoot】pom中的变量

在Maven项目的pom.xml文件中,可以使用多个预定义变量。以下是一些常用的变量: ${project.basedir}:项目根目录的绝对路径。${project.build.directory}:构建目录的绝对路径,通常为target。${project.name}&#xff1a…

iphone内存管理

http://hi.baidu.com/spopavenvldiqyr/item/c8d620b6282c4d4abb0e122a iphone内存管理(一) BY 洋葱头 http://hi.baidu.com/yangcong121/home 内存管理在iphone中一直是一个热点话题。通过一段时间的总结我准备与大家分享一下我对内存管理的一点认识和经验. 开始之前先给大家分…

android 内存至少一半,极客修:为什么iPhone比安卓内存小,却更流畅?

原标题:极客修:为什么iPhone比安卓内存小,却更流畅? 文/极客修小编 即使到今天,iOS和Android之间的战争依然强劲。 显然双方都有各的拥护者,但这并不能阻止大家继续比较两者优劣,看看哪一个更符合我们的需求。 极客君之前已经探讨了iOS系统通常比Android系统使用周期更长…

iPhone 重大缺陷 存储空间耗尽后无法正常开机

问题描述 今天下午接了一个电话,讲到一半电话没声了。 挂断电话之后,去电话里,却找不到刚刚的通话记录。 虽然挂断了电话,但此时显示电话仍在使用麦克风,屏幕右上角有小红点。 感觉不太对劲,按关机却没有…

iPhone开发Swift基础07 内存泄漏检测

Instruments Instruments工具是用于动态跟踪和分析代码的工具,可以跟踪一个或者多个进程,并检测收集实时数据,使开发者更好地理解应用程序和操作系统的行为和性能。 追查代码中难以重现的问题对应用程序进行性能分析自动化测试应用程序中的…

是省还是亏?手工升级iPhone内存存在“后遗症”!...

除了不能享受保修,这种操作本身也存在风险。 没有32G版的iPhone一直是苹果的槽点,16G版的iPhone内存不够用,64G版的又贵了不少。最近,一些手机维修门店以及万能的淘宝已经提供手工升级iPhone内存的服务了。手工增加iPhone内存貌似…

iPhone内存比Android手机小,iPhone内存为什么一直这么小

近年来,和国产安卓手机的“慷慨”相比,iPhone的内存始终相当“吝啬”,最新发布的iPhone 11系列也不过4GB内存,甚至不如国产千元机。不过由于iOS的流畅度有口皆碑,曾经2GB iPhone干法6GB甚至8GB安卓手机是常有的事儿。 …