Iphone copyWithZone发行

Iphone copyWithZone发行,iphone,objective-c,ipad,nscopying,Iphone,Objective C,Ipad,Nscopying,我试图通过以下操作复制UIViewController子类: BookViewController *bookVC = [catalogFlatViewController copy]; 我有以下错误: '-[BookViewController copyWithZone:]: unrecognized selector sent to instance 0x8e5f00' UIViewController不符合NSCopying。如果要复制,必须使用NSCoding: NSData *ar

我试图通过以下操作复制UIViewController子类:

BookViewController *bookVC = [catalogFlatViewController copy];
我有以下错误:

'-[BookViewController copyWithZone:]: unrecognized selector sent to instance 0x8e5f00'

UIViewController
不符合
NSCopying
。如果要复制,必须使用
NSCoding

NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:controller];
UIViewController *newController = [NSKeyedUnarchiver unarchiveObjectWithData:archive];
如果已将新IVAR添加到视图控制器,则必须重写
NSCoding
方法(
encodeWithCoder:
initWithCoder:
)才能正确序列化和反序列化这些IVAR。看


顺便说一句,这基本上就是nib文件的工作原理。

请参阅以下帖子中的@Caleb answer:

Caleb的答案如下所示

UIViewController未实现NSCopying协议。除非 您已经在自己的UIViewController子类中实现了NSCopying, 视图控制器不会响应
-copyWithZone:

有关更多信息,请参阅

但我建议您不要实施NSCopying协议参考,因为@RobNapier在

希望这对您有所帮助。

可能的副本