suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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

伊谢尔伦伊谢尔伦2757 Tage vor671

Antworte allen(2)Ich werde antworten

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-02 09:37:32

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

    Antwort
    0
  • PHP中文网

    PHP中文网2017-05-02 09:37:32

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

    Antwort
    0
  • StornierenAntwort