У меня есть класс A, который содержит свойство класса B. Класс B имеет слабую ссылку на его «родительский» класс A. Оба класса реализуют NSCopying.Правильно NSCopying свойство «parent», которое указывает на его уже скопированный родительский объект
Я не знаю, как именно NSCopying должен быть реализован в классе B. Я вижу два очевидных варианта:
- присвоить родительское свойство скопированную класса
- скопировать родительское свойство и присвоить его к скопированному классу
В первом случае родительское свойство в B укажет исходное A. Во втором случае родительское свойство является полностью новой копией.
Как скопировать класс B правильно, чтобы родительское свойство указывало на вновь созданную копию A во время процесса NSCopying?
-(id) copyWithZone:(NSZone*)zone
{
MyClassB* copy = [[[self class] allocWithZone:zone] init];
copy->_parent = _parent; // <<-- should reference the new copy of A, but how?
return copy;
}
Я полагаю, что самый простой подход будет обновить родительское свойство из copyWithZone: в классе А. Но есть ли способ, что я могу сделать это внутри класса B?