search

Home  >  Q&A  >  body text

Objective-c - Why does the copy property in Object c return an object that is not a deep copy?

Object declared as

@interface MyClass : NSObject
@property (atomic, copy) NSMutableString *name;
@end

is defined as

@implementation MyClass
@synthesize name;
@end

Call

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]);

If the object returned by copy each time is a deep copy of the variable string, why are the printed addresses the same?

伊谢尔伦伊谢尔伦2787 days ago695

reply all(2)I'll reply

  • 过去多啦不再A梦

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

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

    reply
    0
  • PHP中文网

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

    Uh-huh. . You printed the same address three times, how can you change it?

    reply
    0
  • Cancelreply