此编码器要求从 initWithCoder 返回替换的对象:'

Posted

技术标签:

【中文标题】此编码器要求从 initWithCoder 返回替换的对象:\'【英文标题】:This coder requires that replaced objects be returned from initWithCoder:'此编码器要求从 initWithCoder 返回替换的对象:' 【发布时间】:2011-04-18 18:50:25 【问题描述】:

我正在模拟器 3.1.3 版本上测试我的应用程序,它运行良好。对于模拟器 3.2 或 4.0,它从一开始就崩溃:

2010-09-28 18:36:39.957 Angeloni[23268:207] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:'

*** Call stack at first throw:
(
    0   CoreFoundation                      0x0268cb99 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x027dc40e objc_exception_throw + 47
    2   CoreFoundation                      0x02645238 +[NSException raise:format:arguments:] + 136
    3   CoreFoundation                      0x026451aa +[NSException raise:format:] + 58
    4   UIKit                               0x005d03fa UINibDecoderDecodeObjectForValue + 2384
    5   UIKit                               0x005d1179 -[UINibDecoder decodeObjectForKey:] + 398
    6   UIKit                               0x004f6d77 -[UIRuntimeConnection initWithCoder:] + 212
    7   UIKit                               0x005d04ca UINibDecoderDecodeObjectForValue + 2592
    8   UIKit                               0x005cfdc2 UINibDecoderDecodeObjectForValue + 792
    9   UIKit                               0x005d1179 -[UINibDecoder decodeObjectForKey:] + 398
    10  UIKit                               0x004f6034 -[UINib instantiateWithOwner:options:] + 804
    11  UIKit                               0x004f7eb5 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
    12  UIKit                               0x003ad95f -[UIViewController _loadViewFromNibNamed:bundle:] + 70
    13  UIKit                               0x003ab675 -[UIViewController loadView] + 120
    14  UIKit                               0x003ab54f -[UIViewController view] + 56
    15  Angeloni                            0x000045ba -[MenuPrincipalViewController gotoOfertas:] + 109
    16  UIKit                               0x003017f8 -[UIApplication sendAction:to:from:forEvent:] + 119
    17  UIKit                               0x0038cde0 -[UIControl sendAction:to:forEvent:] + 67
    18  UIKit                               0x0038f262 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    19  UIKit                               0x0038de0f -[UIControl touchesEnded:withEvent:] + 458
    20  UIKit                               0x003253d0 -[UIWindow _sendTouchesForEvent:] + 567
    21  UIKit                               0x00306cb4 -[UIApplication sendEvent:] + 447
    22  UIKit                               0x0030b9bf _UIApplicationHandleEvent + 7672
    23  GraphicsServices                    0x02f04822 PurpleEventCallback + 1550
    24  CoreFoundation                      0x0266dff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    25  CoreFoundation                      0x025ce807 __CFRunLoopDoSource1 + 215
    26  CoreFoundation                      0x025cba93 __CFRunLoopRun + 979
    27  CoreFoundation                      0x025cb350 CFRunLoopRunSpecific + 208
    28  CoreFoundation                      0x025cb271 CFRunLoopRunInMode + 97
    29  GraphicsServices                    0x02f0300c GSEventRunModal + 217
    30  GraphicsServices                    0x02f030d1 GSEventRun + 115
    31  UIKit                               0x0030faf2 UIApplicationMain + 1160
    32  Angeloni                            0x00002342 main + 84
    33  Angeloni                            0x000022e5 start + 53
)

terminate called after throwing an instance of 'NSException'

有人遇到过这个问题吗?我在某个论坛上看到这是一个 IB 问题。

如果有人可以帮忙。

【问题讨论】:

嗨,您是否调用了 instantiateWithOwner,我似乎记得这是一个 4.x 唯一的方法。这让它在 3.1 而不是更高版本中工作有点奇怪? 你有没有想过这个问题?我找不到答案 【参考方案1】:

在我没有使用任何 Storyboard 的项目中遇到了这个问题。

我必须做的:

转到我项目的Info.plist 文件 删除那里的Main storyboard file base name 条目。

【讨论】:

以上是关于此编码器要求从 initWithCoder 返回替换的对象:'的主要内容,如果未能解决你的问题,请参考以下文章

我应该在这里使用awakeFromNib还是initWithCoder?

我应该在这里使用 awakeFromNib 还是 initWithCoder ?

initWithCoder与initWithFrame的区别

initWithCoder: 与initWithFrame:的区别

覆盖 initWithCoder 时的无限循环

如何 initwithCoder 和 encodewithCoder 获取指针的值