我有一个带有TabBarNavigationController和NavigationController的应用程序。 导航控制器的视图是
HomeViewController
CharacterViewController
FinalViewController
我在CharacterViewController
和FinalViewController
中有一个功能,因此如果用户点击导航控制器的标签栏项,则会显示HomeViewController
:
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
if tabBarController.selectedIndex == 0{
self.navigationController?.popToRootViewControllerAnimated(false)
}
}
当用户在CharacterViewController
或FinalViewController
中并转到另一个标签页然后再点击导航控制器标签时,popToRootViewControllerAnimated
会被调用,而用户位于HomeViewController
}。
到目前为止一切正常,问题是此时我从标签栏点击其他标签,应用程序崩溃了。 在日志中它显示我
2015-09-06 14:02:24.120 PIBA[32338:510545] *** -[PIBA.CharacterViewController respondsToSelector:]: message sent to deallocated instance 0x79e88320
如果我使用断点,则显示
0x8a217f <+783>: jmp 0x8a2288
(这对我没有帮助)
所以我搜索了NS Zombies,测试结果显示:
self.navigationController?.popToRootViewControllerAnimated(false)
正在发布一个对象
但是什么对象?我该如何保留它?