iOS7 UIToolbar 崩溃

Posted

技术标签:

【中文标题】iOS7 UIToolbar 崩溃【英文标题】:iOS7 UIToolbar crash 【发布时间】:2013-11-18 01:35:46 【问题描述】:

我有一个 iPad 应用程序在 ios7 之前一直运行良好。这个问题似乎只出现在 ipad 2nd gen 型号和安装 iOS7 的更早版本上。无论如何,我一直在努力找出这个错误的来源,但没有运气。 xcode(5)中的控制台在我执行login segue后报如下错误:

2013-11-18 11:17:31.768 MyApp[400:60b] *** -[UIToolbar backdropView:willChangeToGraphicsQuality:]: message sent to deallocated instance 0x18ec23e0

我无法查找地址以获取更多信息(image lookup -a 0x18ec23e0)它什么也不返回。

在运行僵尸的仪器中,它报告一条消息已发送到 UIToolbar,如下所示:

当我检查实例时,我得到以下信息:

我该如何调试呢?我不知道这个电话是在哪里打的,它似乎依赖于物理设备(在 iPad mini 或 ipad 3/4 上不会发生)

【问题讨论】:

iPad 2 是视网膜吗? 找到这个***.com/questions/19883238/…,你有需要一些时间才能完成的异步任务吗? 不,iPad 不是视网膜显示屏 iPad(型号为 MD328X/A 和 MC982X/A)。我确实使用 AFNetworking 来执行异步 REST Web 服务调用,但是正在执行的 segue 取决于返回的任务。 我刚刚尝试实现延迟触发方法,如 juniperi 建议的线程中所见,但无论超时长度如何,这都不起作用。 您解决了这个问题吗?我现在也有同样的问题。 【参考方案1】:

我遇到了一个非常相似的错误,也是 UIToolbar 的问题,直到几个小时前我才弄清楚。我还不得不使用并尝试理解僵尸的乐器,但没有任何运气。

我所做的是密切关注异常断点激活时出现的调用堆栈,如以下教程所述:

http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1

尽管调用堆栈没有将我指向确切的代码行,但我注意到该应用正在尝试将 UIToolbar 添加到 ViewController。原来我正在做的是在方法内创建一个本地 UIToolbar 并将其添加到呈现的 UIView。修改此行为后,我不再遇到烦人的突然崩溃。我很难找到问题,因为查看导致崩溃的 ViewController 的代码,没有创建或使用 UIToolbar 的代码;然而,正如我之前解释的那样,这个 VC 包含一个自定义视图,正是这样做的。

说了这么多,我建议你仔细检查导致崩溃的 VC。如果您需要以编程方式创建 UIToolbar,我建议您将其声明为强属性,以便在需要时维护内存引用。

希望对你有帮助。

【讨论】:

【参考方案2】:

我今天为此苦苦挣扎了一段时间。我有两个故事板,一个用于登录/注册(设置为项目的主故事板),另一个用于应用程序的其余部分。应用程序委托将检测用户是否登录并实例化另一个故事板的根视图控制器。登录故事板的根视图控制器是一个导航控制器,在使用仪器进行一些调查后,我意识到有一个 UIToolbar 正在从 nib 实例化。打开故事板文件会在根视图控制器中显示一个屏幕外的 UIToolbar 对象。我删除了它,我不再崩溃了。

我还应该提到这个崩溃仅在我使用 MKMapView 时发生。

【讨论】:

以上是关于iOS7 UIToolbar 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 上的 UIToolbar 样式

iOS7 UIToolbar 上缺少阴影(细线)

iOS7如何绘制透明的UIToolbar或UINavigationBar

iOS7中的UIToolbar颜色不正确

在 iOS7 中半透明的 UIToolbar 上挖一个洞

在ios7中将细线边框添加到UiToolbar的底部[重复]