objective-c - Object c里的copy属性为什么返回的对象不是深拷贝的?
伊谢尔伦
伊谢尔伦 2017-05-02 09:35:32
0
2
665

对象声明为

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(2)
过去多啦不再A梦

copy은 값을 할당할 때 복사 작업을 의미합니다. s의 주소를 다시 인쇄해 볼 수 있습니다.
ps: 가변 유형 속성 사용 copy

洪涛

음. . 동일한 주소를 세 번 인쇄했는데 어떻게 변경할 수 있나요?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿