搜尋

首頁  >  問答  >  主體

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每次回傳的物件對於可變字串都是深拷貝的話,為什麼列印的位址是一樣的?

伊谢尔伦伊谢尔伦2787 天前691

全部回覆(2)我來回復

  • 过去多啦不再A梦

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

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

    回覆
    0
  • PHP中文网

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

    額。 。你三次印的都是一個地址,怎麼變?

    回覆
    0
  • 取消回覆