1

我似乎有一个非常奇怪的问题。我的应用程序有一个UITabBar可以让您选择各种视图控制器。如果在给定的选定选项卡项中,另一个视图控制器被推入堆栈,然后UINavigationController使用情节提要或pushViewController或从堆栈中弹出popViewController,当您选择另一个选项卡项时,应用程序崩溃。我对此进行了跟踪,发现有一个僵尸对象,即被推送然后弹出的视图控制器。该应用程序显然正在尝试向其发送消息。这是日志消息。

*** -[UserInputViewController respondsToSelector:]: message sent to deallocated instance 0xa5f0620

一旦它从堆栈中弹出并可能被释放,我在我的代码中看不到我正在访问视图控制器的任何地方,并且在单击选项卡栏项目时我不做任何特殊处理。实际上它之前崩溃了

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

甚至被称为。似乎标签栏仍然以某种方式认为这个视图控制器已分配并在堆栈上,否则它为什么会尝试向它发送消息?

任何帮助是极大的赞赏。

4

1 回答 1

1

发现了这个问题。那个解除分配的视图控制器实际上被分配为UITabBarController的委托!哎呀。在这里找到了这个答案。

视图控制器在发布后收到发送给它的消息,导致崩溃

于 2013-08-28T04:58:07.023 回答