NSCopy の使い方を学んでいます。UIScrollView の ImageView である、使用しているカスタム オブジェクトのコピーを作成したいと考えています。
次のように 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];
コピーは作成されますが、奇妙な問題が 1 つあります。コピーされたオブジェクトの ImageView (UIImageView) および ImageToShow (UIImage) プロパティは、元のオブジェクトと同じように見えます。この種のコピー コードは、ImageView と ImageToShow の新しいバージョンを作成するのではなく、ポインターを再指定しているため、理にかなっています。
私の質問は、他のオブジェクトへのポインターを含むオブジェクトのコピーを作成するにはどうすればよいですか?
ありがとう !