我有問題關於Objective-C的 「複製」,我在Car.m功能是這樣的:淺拷貝和深深的對象C複製
- (id) copyWithZone: (NSZone *) zone
{
Car *carCopy;
carCopy = [[[self class] allocWithZone: zone] init];
carCopy.name = self.name; //not [name copy]
return (carCopy);
} // copyWithZone
的int的main.m:
Car *car = [[Car alloc] init];
car.name = @"abc";
Car *copyCar = [car copy];
[copyCar print];
car.name = @"123";
[copyCar print];
爲屬性名稱,我認爲汽車和copyCar指向相同的NSString對象,以便當我做「car.name = @」123「」時,copyCar.name也應該改變。但是當我在代碼中打印兩次copyCar時,它們都將名稱打印爲「abc」。我想知道它爲什麼不是淺拷貝?
謝謝!我明白。 – itenyh