黑马程序员技术交流社区

标题: objective c retain与copy的区别 [打印本页]

作者: nsswift    时间: 2015-5-24 09:03
标题: objective c retain与copy的区别
本帖最后由 nsswift 于 2015-6-15 09:09 编辑

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



比如一个Car对象 Car *car1 =[ [Car alloc]init];

如果使用retain Car *car2 = [car1 retain];这样如果使用car1对对象中的属性进行改变这样car2指向对象的值也会改变,因为car1 car2指向的是同一个对象。

如果使用copy 这样就相当于两个对象,两个对象的值是相同的,原来的对象引用计数不变,新copy的对象的引用计数为1.

NSString是只读的,那么为什么一般NSString都用copy呢?

由于纯NSString是只读的, 所以retain和copy的结果一样。但是NSString的子类NSMutibleString是可以修改的父类可以指向子类(多态知识)为了防止mutable string被无意中修改, 所以NSString一般用copy而不是用retain。

file:///c:/documents and settings/administrator/application data/360se6/User Data/temp/Center.jpg

aaa.jpg (44.01 KB, 下载次数: 6)

aaa.jpg

作者: itios    时间: 2015-5-24 09:59
学习了,思路不错
作者: 13673696542    时间: 2015-5-24 10:48
楼主这是有专门写代码的工具,你这种写法看不出明示的缩进,看你的代码很头痛呀!
作者: 尹世伟    时间: 2015-5-24 10:51
我搬走研究研究。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2