我对objective-c中的“复制”有疑问,我在Car.m中的功能是这样的:
- (id) copyWithZone: (NSZone *) zone
{
Car *carCopy;
carCopy = [[[self class] allocWithZone: zone] init];
carCopy.name = self.name; //not [name copy]
return (carCopy);
} // copyWithZone
在 main.m 中:
Car *car = [[Car alloc] init];
car.name = @"abc";
Car *copyCar = [car copy];
[copyCar print];
car.name = @"123";
[copyCar print];
对于属性名称,我认为 car 和 copyCar 都指向同一个 NSString 对象,因此当我执行 "car.name = @"123" " 时,copyCar.name 也应该更改。但是当我在代码中两次打印 copyCar 时,它们都将名称打印为“abc”。我想知道为什么它不是浅拷贝?