【问题标题】:IOS 8 : -[UIInputViewSet setRestorableResponder:]: message sent to deallocated instance 0x7d6659b0IOS 8:-[UIInputViewSet setRestorableResponder:]:消息发送到已释放实例 0x7d6659b0
【发布时间】:2014-12-23 20:37:24
【问题描述】:

这仅在 IOS 8 iPhone 应用程序中发生,该应用程序在以前的版本中运行良好。来到这个问题, 我有一个表格视图,其中包含文本字段和其他单元格。文本字段的所有代表都已实现。现在,当我单击文本字段时,会显示键盘。虽然键盘仍然可见,但我点击了另一个单元格,将我带到另一个视图,关闭了键盘。现在,当我单击此新视图中的后退按钮以返回上一个视图时,应用程序崩溃并显示标题中提到的错误消息。 这曾经在 IOS 7 和以前的版本中完美运行。请帮忙。

按要求添加堆栈跟踪。

<_NSCallStackArray 0x802a7b30>(
0   ???                                 0x15daa77d 0x0 + 366651261,
1   Application                         0x002e63f0 main + 0,
2   CoreFoundation                      0x06e12fae _CF_forwarding_prep_0 + 14,
3   UIKit                               0x058bb318 -[UIPeripheralHost(UIKitInternal) _restoreInputViewsWithId:animated:] + 701,
4   UIKit                               0x054cdd7d -[UINavigationController navigationTransitionView:didStartTransition:] + 849,
5   UIKit                               0x054c569b -[UINavigationController _startCustomTransition:] + 3843,
6   UIKit                               0x054d2726 -[UINavigationController _startDeferredTransitionIfNeeded:] + 712,
7   UIKit                               0x054d3372 -[UINavigationController __viewWillLayoutSubviews] + 57,
8   UIKit                               0x0564704c -[UILayoutContainerView layoutSubviews] + 213,
9   UIKit                               0x053cedd1 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 608,
10  libobjc.A.dylib                     0x07cf7771 -[NSObject performSelector:withObject:] + 70,
11  QuartzCore                          0x069bc28f -[CALayer layoutSublayers] + 152,
12  QuartzCore                          0x069b0115 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 397,
13  QuartzCore                          0x069aff70 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26,
14  QuartzCore                          0x0690e3c6 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 284,
15  QuartzCore                          0x0690f78c _ZN2CA11Transaction6commitEv + 392,
16  QuartzCore                          0x0690fe58 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92,
17  CoreFoundation                      0x06de59de __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30,
18  CoreFoundation                      0x06de5920 __CFRunLoopDoObservers + 400,
19  CoreFoundation                      0x06ddb35a __CFRunLoopRun + 1226,
20  CoreFoundation                      0x06ddabcb CFRunLoopRunSpecific + 443,
21  CoreFoundation                      0x06dda9fb CFRunLoopRunInMode + 123,
22  GraphicsServices                    0x0865124f GSEventRunModal + 192,
23  GraphicsServices                    0x0865108c GSEventRun + 104,
24  UIKit                               0x053438b6 UIApplicationMain + 1526,
25  Application                         0x002e6491 main + 161,
26  libdyld.dylib                       0x0806cac9 start + 1
)

【问题讨论】:

  • 你能添加完整的堆栈跟踪吗?
  • @MahmoudAdam:添加了堆栈跟踪

标签: ios objective-c iphone ios8 xcode6


【解决方案1】:

我遇到了类似的问题,是的,原来文本字段正在被释放。我在我的代码中通过在推送新视图控制器之前添加对 endEditing 的调用来修复它:

[self.view endEditing:YES];
[self.navigationController pushViewController:...
                                     animated:YES];

【讨论】:

  • 这是为我解决的问题,我在控制器上使用 [self setEditing:NO],但失败了。
  • 为我工作。或者,您可以在视图控制器的 viewWillDisappear 方法中调用 endEditing
【解决方案2】:

我认为问题在于,当转换到下一个视图完成时,TextInput 被释放了, 所以最好知道为什么它被释放并防止它 因此,请检查以下几个问题以更深入地了解问题:

How to debug “message sent to deallocated instance” in Xcode4?

ViewController respondsToSelector: message sent to deallocated instance (CRASH)

【讨论】:

  • 我遇到了问题。如果我直接将文本字段作为子视图添加到单元格的内容视图,则会发生这种情况。创建自定义单元格已修复。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多