【发布时间】:2011-11-11 11:56:00
【问题描述】:
由于不存在视图控制器,我的应用程序崩溃了。在升级到最新版本的 Xcode 并获得正确符号化的设备日志后,我的怀疑得到了证实。单击页面上的后退按钮后,会调用 popviewcontroller 并且应用程序崩溃。这是来自我的系统的确切错误报告:
Thread 0 Crashed:
0 libobjc.A.dylib 0x341fcc98 0x341fa000 + 11416
1 libobjc.A.dylib 0x34206506 0x341fa000 + 50438
2 libobjc.A.dylib 0x341fe040 0x341fa000 + 16448
3 Holler 0x00010a06 0x1000 + 64006
4 Holler 0x0000e504 0x1000 + 54532
5 UIKit 0x00036f08 -[UIViewController view] + 104
6 UIKit 0x000455e8 -[UIViewController contentScrollView] + 16
7 UIKit 0x00045458 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 24
8 UIKit 0x00045356 -[UINavigationController _layoutViewController:] + 18
9 UIKit 0x00044e2e -[UINavigationController _startTransition:fromViewController:toViewController:] + 374
10 UIKit 0x00044c3c -[UINavigationController _startDeferredTransitionIfNeeded] + 176
11 UIKit 0x00044b80 -[UINavigationController viewWillLayoutSubviews] + 8
12 UIKit 0x00044b1c -[UILayoutContainerView layoutSubviews] + 132
13 UIKit 0x000055f4 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 20
14 CoreFoundation 0x0000befc -[NSObject(NSObject) performSelector:withObject:] + 16
据我了解,UINavigationController 保留其堆栈中所有视图控制器的所有权。然而,出于某种原因,我的一个视图控制器正在消失。我要确认的是 UINavigationController 实际上确实会持续保留其视图控制器。
我只能在很长一段时间后让它崩溃(我去睡觉,重新加载应用程序并单击“返回”,然后应用程序崩溃)。是否有一些与 UINavigationController 的生命周期相关的东西或者我需要知道的那些方面的东西?有人对如何开始缩小问题范围有任何想法吗?
我假设简单的答案是我过度发布了一个视图控制器,当我点击返回时它不再存在。但是我想得到一些其他成员的意见。想法?
【问题讨论】:
标签: objective-c ios xcode cocoa-touch xcode4