Я использую этот код для копирования и экземпляр моего класса
//Create the copy and pass it onto edit controller
PoolFacility *poolCopy = [self.thePoolFacility copy];
self.childController.thePoolFacilityCopy = poolCopy;
[poolCopy release];
Теперь, когда я смотрю переменные в отладчике, почему некоторые поля класса имеют один и тот же адрес памяти? Разве они не должны быть независимыми? По словам Apple
Протокол NSCopying объявляет метод для предоставления функциональных копий объекта. Точное значение «copy» может варьироваться от класса к классу, но копия должна быть функционально независимым объектом со значениями, идентичными оригиналу на момент создания копии.
Два экземпляра: poolCopy и оригинальный thePoolFacility
![alt text](https://farm4.static.flickr.com/3351/3297076791_7db25a3604.jpg?v=0)
Мой метод копирования классов выглядит следующим образом:
- (id)copyWithZone:(NSZone *)zone {
PoolFacility *copy = [[[self class] allocWithZone:zone]init];
copy.name = [self.name copy];
copy.type = [self.type copy];
copy.phoneNumber = [self.phoneNumber copy];
//make sure I get proper copies of my dictionaries
copy.address = [self.address mutableCopy];
copy.webAddress = [self.webAddress copy];
copy.prices = [self.prices mutableCopy];
copy.pools = [self.pools mutableCopy];
return copy;
}