比如一个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.jpgaaa.jpg (44.01 KB, 下载次数: 6)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |