setRefreshed:在横向模式下发送到 UIViewController 的无法识别的选择器
Posted
技术标签:
【中文标题】setRefreshed:在横向模式下发送到 UIViewController 的无法识别的选择器【英文标题】:setRefreshed: unrecognized selector sent to UIViewController in Landscape Mode 【发布时间】:2012-07-30 21:07:56 【问题描述】:我有多个支持横向模式的 UITableviewController 和一个不支持横向模式的 UIViewController。无论显示哪个视图,当我在横向模式下关闭应用程序时,都会出现以下异常:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[LedgerViewController setRefreshed:]:无法识别的选择器发送到实例 0x161df0”
以纵向模式关闭应用不会产生异常。
我的项目的完整搜索没有找到术语“setRefreshed”,也找不到任何 Apple 文档或通过 Google 找到的术语。
有什么想法吗?
【问题讨论】:
我发现向每个视图控制器添加以下代码可以阻止异常的触发:-(void) setRefreshed: (BOOL) refreshed
我怎样才能弄清楚是什么在调用“setRefreshed:”?
【参考方案1】:
感谢 raywenderlich.com 的 AWESOME 人员,他们花时间编写了一些可用的最佳教程:My App Crashed, Now What? – Part 1
一个异常断点导致我的 ApplicationDelegate 中有一些糟糕的代码,它假定导航控制器的 rootViewController 是“RootViewController”,它的 BOOL 属性为“刷新”。在我为横向模式实施不同的视图之前,这是一个很好的假设。这就是为什么只在横向模式下抛出异常的原因。
我今天学到的东西:
-
对于 KVC,我应该很明显“setRefreshed”是等同于“????.refreshed”的 KVC。
我应该在几年前阅读高级调试技术。
【讨论】:
以上是关于setRefreshed:在横向模式下发送到 UIViewController 的无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章
JTRevealSideBar UI 在 iPhone 和 iPad 的横向模式下无法正确显示
UIMenuController 在横向模式下点击并按住缩放气泡失败