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 在横向模式下点击并按住缩放气泡失败

无法在横向模式下点击 (x,y) 坐标

UISplitViewController 将详细视图推送到表/主视图

基本视图 UI 导航栏对方向的响应

将不同方向的 UIViewController 推送到上一个