objective-c - Object c里的copy属性为什么返回的对象不是深拷贝的?

浏览:56日期:2023-11-20

问题描述

对象声明为

@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每次返回的对象对于可变字符串都是深拷贝的话,为什么打印的地址是一样的?

问题解答

回答1:

copy是指在赋值的时候进行一次copy操作,你可以再尝试打印下s的地址,ps: mutable类型的属性别用copy

回答2:

额。。你三次打印的都是一个地址,怎么变?

相关文章: