使用iOS 6 SDK升级xcode并编译我的应用后,我在应用中发生了很多崩溃。从我能够追踪到的内容看起来,UIKit的消息看起来像是在模态时使用视图控制器,而不是新创建的视图控制器。这是它的外观:UIKit消息在iOS 6的segue期间释放对象0
我有一个Tabbar控制器,它显示一个导航控制器。由导航控制器显示的另一个视图控制器显示一个模态视图控制器。
TabbarController - > NavigationController - > ViewController(呈现) - |显示使用模态segue | - >的ViewController(呈现)
步骤来使所述碰撞:
- 在层次结构中访问视图控制器(呈递)如上所示。它不是根视图cntrl但更高。
- 触发segue到模态视图控制器。
- 从标签栏(无论哪个)选择一个选项卡并返回到相同的视图控制器(呈现)。选择标签会在导航控制器上调用popToRoot。
- 再次触发模式SEGUE到视图控制器(提交)
- 崩溃:僵尸对象 - 视图 - 控制器(提交) - 得到了传递消息
为什么? 它看起来像在以前的iOS中,当popToRoot被调用并且View Controller(呈现)正在清理时,模态视图也被破坏了。所以当它再次被访问时,它被重新创建并呈现。 在iOS 6上,从Allocations Instrumentation显示模式视图与 视图控制器(呈现)一起销毁。但是当它由于某种原因被访问时,UIKit会创建一个新的Modav视图控制器,然后再发送不再存在的旧视图控制器。没有意义。
另一件令我想知道的事情是,在iOS 5 Allocations Instrumentation工具从不向我显示保留计数= 0的View Controller(呈现),但iOS 6(之后它使其成为-1)。
我知道这可能是非常困难的问题来帮助我,但也许有人已经解决了iOS 6的问题和这样的segues?
从分配仪器仪表工具,我可以告诉大家,很多事情塞格斯的实施得到了改变在iOS 6