iphone - copyWithZone 问题

标签 iphone objective-c ipad nscopying

我正在尝试通过执行以下操作来制作 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];

如果您已将新的 ivars 添加到 View Controller ,则必须重写 NSCoding 方法(encodeWithCoder:initWithCoder:) 正确地序列化和反序列化它们。请参阅Archives and Serializations Programming Guide .

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

关于iphone - copyWithZone 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083184/

相关文章:

ios - 将 subview 添加到 headerview : added to a wrong section

iphone - 更改正在进行的动画

iphone - 停止 NSDictionary 的 block 枚举

iphone - 在 ipad 和 iphones 中隐藏 iframe 的一部分

iphone - 类似杂志的版式是如何制作的?

iphone - 创建对象 - Objective-C

iphone - 从 iPhone 到 Mac 编程

iphone - 无论如何要在 Xcode 中查看方法执行时间?

iphone - 在 MonoTouch 中调用 REST 服务的首选方式是什么?

objective-c - 插入 UIImageView 作为导航栏按钮