Я изучаю, как использовать NSCopy. Я хочу сделать копию пользовательского объекта, который я использую, который является ImageView в UIScrollView.Использование NSCopy для копирования пользовательского объекта, содержащего указатели?
Я пытаюсь реализовать протокол NSCopying следующим образом:
-(id)copyWithZone:(NSZone *)zone
{
ImageView *another = [[ImageView allocWithZone:zone]init];
another.imageView = self.imageView;
another.imageToShow = self.imageToShow;
another.currentOrientation = self.currentOrientation;
another.portraitEnlarge = self.portraitEnlarge;
another.landscapeEnlarge = self.landscapeEnlarge;
another.originalFrame = self.originalFrame;
another.isZoomed = self.isZoomed;
another.shouldEnlarge = self.shouldEnlarge;
another.shouldReduce = self.shouldReduce;
another.frame = self.frame;
//another.delegate = another;
another.isZoomed = NO;
[another addSubview:another.imageView];
return another;
}
Затем скопировать объект в другом классе:
ImageView * onePre = [pictureArray objectAtIndex:0];
ImageView * one = [onePre copy];
копия сделана, однако у меня есть одна проблема нечетное. Свойства ImageView (UIImageView) и ImageToShow (UIImage) объекта копируемого объекта выглядят так же, как и исходные объекты. Такой подход имеет смысл, так как в коде копирования я перенаправляю указатель, вместо того, чтобы создавать новую версию ImageView и ImageToShow.
Мой вопрос: как создать копию объекта, содержащего указатели на другие объекты?
Спасибо!
UIImageView и UIImage не соответствуют NSCopying, если вы хотите их скопировать, вы должны реализовать его самостоятельно, в категориях. –
Ах интересно, был ли это ответ - спасибо. – GuybrushThreepwood