У меня есть объект со свойствами NSString, UIImageView и простыми vars типа BOOL, int и float.Объекты с глубоким копированием Objective C с UIImageView как свойство
Я пытаюсь создать глубокую копию объекта. Для этого я реализовал протокол NSCopying в мой класс и метод copyWithZone как:
-(id)copyWithZone:(NSZone *)zone
{
iItem *clone = [[iItem alloc] init];
//iItem *clone = [super copyWithZone:zone];
clone.originalTransform = self.originalTransform;
clone.initialTransform = self.initialTransform;
clone.originalFrame = self.originalFrame;
clone.zOrder = self.zOrder;
clone.itemId = self.itemId;
clone.itemIdColor = self.itemIdColor;
clone.itemIdTexture = self.itemIdTexture;
clone.itemIdStyle = self.itemIdStyle;
clone.textureLevel = self.textureLevel;
clone.currentSizePercent = self.currentSizePercent;
clone.holdItem = self.holdItem;
clone.isInverted = self.isInverted;
clone.delegate = self.delegate;
clone.mergedFrame = self.mergedFrame;
clone.selectedMergeView = [self.selectedMergeView copy];
clone.ScaleFactorScreen = self.ScaleFactorScreen;
clone.selectedFrameView = [self.selectedFrameView copy];
clone.selectedFrame = [self.selectedFrame copy];
clone.frameBeforeMovement = self.frameBeforeMovement;
//clone.touchBeginPoints = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
clone.touchBeginPoints = CFDictionaryCreateMutableCopy(NULL, 0, self.touchBeginPoints);
clone.contentMode = UIViewContentModeScaleAspectFit;
clone.animationImages = self.animationImages;
clone.image = [self.image copy];
clone.animationDuration = self.animationDuration;
clone.animationRepeatCount = self.animationRepeatCount;
[clone startAnimating];
clone.transform = self.transform;
clone.frame = self.frame;
clone.userInteractionEnabled = YES;
clone.multipleTouchEnabled = YES;
return clone;
}
Класс iItem наследует от класса UIImageView, поэтому я попытался назвать супер copyWithZone, но я получаю сообщение об ошибке. И для объектов UIImageView, которые я пытаюсь клонировать, я получаю сообщение SIGABRT '- [UIImageView copyWithZone:]: нераспознанный селектор, отправленный в экземпляр 0x210f50'.
Как сделать глубокую копию объекта с UIImageViews, NSString и простыми vars?
Спасибо.
Но когда выполняется первый экземпляр злоумышленником UIImageView, я получаю сообщение SIGABRT. – NemeSys
Какая ошибка? Копировать можно только на своих дочерних классах, а не на общем UIImageView .... –