OBJC中retain和copy的区别详解
来源:互联网 发布:红中癞子麻将胡牌算法 编辑:程序博客网 时间:2024/05/21 17:39
直接贴代码,注释很详细,一看就明白,可直接赋值代码到你的工程中进行测试,你会发现惊喜...
@property (copy,nonatomic) A *a;
@property (copy,nonatomic) A *a2;
A *temp = [[A alloc]init];
//在这里打印,retainCount为1
NSLog(@"count 1:%d",[tempretainCount]);
self.a = temp;
self.a2 = temp;
//这里打印,因为copy是会retain,但retain的不是原来的对象,而是一个新对象,所以以下三个打印都是1,如果把声明换成retain,那么结果都是3,经测试完全符合预期结果,另外说明:不要用NSString来测试retain和copy的区别(否则你会被它搞得晕头转向的,因为你会发现用NSString来测试,无论你用copy还是retain声明变量,得到的retainCount结果都是一样的,找不出区别,可能因为NSString的内部实现可能有些特殊…,特殊之处有待研究…)
NSLog(@"count temp:%d",[tempretainCount]);
NSLog(@"count a:%d",[self.aretainCount]);
NSLog(@"count a2:%d",[self.a2retainCount]);
另外附上A类的声明和实现,注意必须实现NSCoping协议,否则A类型的变量不能被声明为copy
@interface A : NSObject<NSCopying>@end@implementation A-(id)copyWithZone:(NSZone *)zone{ return [[[self class] alloc]init];}@end
- OBJC中retain和copy的区别详解
- ObjC的Retain的属性和Copy的区别
- @property中retain和copy的区别
- IOS中Retain和Copy的区别
- IOS中Retain和Copy的区别
- IOS中Retain和Copy的区别
- retain和copy的区别
- retain和copy的区别
- retain和copy的区别
- retain和copy的区别
- retain和copy的区别
- retain和copy的区别
- copy和retain的区别
- retain和copy的区别
- copy和retain的区别
- retain和copy的区别
- object c 中 retain 和copy的区别
- Object C中,retain和copy的区别
- java 文件读写
- 120941138混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行
- Designing an IAM Framework with Oracle Identity and Access Management Suite[文摘]
- jquery 简单应用总结
- 浅析 Java Thread.join()
- OBJC中retain和copy的区别详解
- 5.2方法详解
- 手动解决dll文件无法删除的终极方法!(转)
- 节约用水的极致 洗衣机与马桶完美的结合
- html select 只读
- WPF中绑定转换IValueConverter
- Android应用开发笔记(1) 调用打电话和发短信、收短信接口、发Email
- 墙漆工程
- coco2dx TrasitionsTest