objective-c - Object c里的copy属性为什么返回的对象不是深拷贝的?
本文介绍了objective-c - Object c里的copy属性为什么返回的对象不是深拷贝的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
对象声明为
@interface MyClass : NSObject
@property (atomic, copy) NSMutableString *name;
@end
定义为
@implementation MyClass
@synthesize name;
@end
调用
MyClass *m = [[MyClass alloc] init];
NSMutableString *s = [[NSMutableString alloc] initWithString:@"Hello"];
[m setName:s];
NSLog(@"%p", [m name]);
NSLog(@"%p", [m name]);
NSLog(@"%p", [m name]);
如果说copy每次返回的对象对于可变字符串都是深拷贝的话,为什么打印的地址是一样的?
解决方案
copy
是指在赋值的时候进行一次copy操作,你可以再尝试打印下s
的地址,
ps: mutable类型的属性别用copy
这篇关于objective-c - Object c里的copy属性为什么返回的对象不是深拷贝的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文