我似乎有一个非常奇怪的问题。我的应用程序具有UITabBar
,可让您选择各种视图控制器。如果在给定的选定选项卡项目中,将另一个视图控制器推入堆栈,然后使用情节提要segues或UINavigationController
或pushViewController
从popViewController
的堆栈弹出,当您选择另一个选项卡项目时,应用程序崩溃。我对此进行了跟踪,发现有一个僵尸对象,即被推入然后弹出的viewcontroller。该应用显然正在尝试向其发送消息。这是日志消息。*** -[UserInputViewController respondsToSelector:]: message sent to deallocated instance 0xa5f0620
一旦将视图控制器从堆栈中弹出并可能已释放,我在代码中就看不到访问视图控制器的任何地方,并且在单击选项卡栏项时没有进行任何特殊处理。实际上它崩溃之前
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
甚至被称为。看来,选项卡栏仍然以某种方式认为此viewcontroller已分配并在堆栈上,否则为什么会尝试向其发送消息?
任何帮助是极大的赞赏。
最佳答案
发现了这个问题。那个释放的视图控制器实际上被分配为UITabBarController
的委托!哎呀。在这里找到这个答案。
View Controller getting a message sent to it after release, causes a crash
关于ios - 选择UITabItem时iOS应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18479633/