我似乎有一个非常奇怪的问题。我的应用程序有一个UITabBar
可以让您选择各种视图控制器。如果在给定的选定选项卡项中,另一个视图控制器被推入堆栈,然后UINavigationController
使用情节提要或pushViewController
或从堆栈中弹出popViewController
,当您选择另一个选项卡项时,应用程序崩溃。我对此进行了跟踪,发现有一个僵尸对象,即被推送然后弹出的视图控制器。该应用程序显然正在尝试向其发送消息。这是日志消息。
*** -[UserInputViewController respondsToSelector:]: message sent to deallocated instance 0xa5f0620
一旦它从堆栈中弹出并可能被释放,我在我的代码中看不到我正在访问视图控制器的任何地方,并且在单击选项卡栏项目时我不做任何特殊处理。实际上它之前崩溃了
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
甚至被称为。似乎标签栏仍然以某种方式认为这个视图控制器已分配并在堆栈上,否则它为什么会尝试向它发送消息?
任何帮助是极大的赞赏。