0

这更多是对问题和我的实现的讨论,这似乎引起了问题。

我的应用程序有一个标签栏和导航控制器。在每个选项卡中,您可以进入视图,并且选项卡栏将被隐藏,直到您从子视图中单击返回。

我的选项卡上的每个都有一个导航控制器,这些在我的应用程序委托中被声明为插座,并且还有@class tab1navcontroller

一个典型的用途是。

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] 
       delegate];
[delegate.tab1NavController pushViewController:nextController animated:YES];

过去我在这方面没有遇到很多问题,我相信我是从当时正在阅读的书中复制了这种方法。

然而,几个月前我和一位大学讨论过,他说我的应用程序应该只有一个导航控制器。

当时我确实尝试替换代码(如上所示)并self.navigationcontroller改用,但这会导致问题,我不记得它们是什么,但我放弃了这些修复。

今天发生了一个错误,当视图被快速推送和返回时。我还使用僵尸分析器运行了该应用程序,这表明上面的代码是问题所在。

我相信上面的代码可能会导致泄漏。

我只是不知道什么方法是最好的,从这里去哪里?

4

1 回答 1

0

正如@Dima 在评论中所说,你的同事错了。在我的应用程序中,我有一个 tabbarController 作为窗口 rootViewController。您可以在属性或其 viewController 数组或单独的导航控制器中公开它。您不能在多个选项卡中重复使用导航控制器 - 每个选项卡一个,或者混合使用。也就是说,在我的 tabbarController 中,我有 4 个导航控制器和一个普通的 UIViewController 子类。

选项卡栏控制器保留其所有视图控制器,导航控制器保留其所有视图控制器。也就是说,如果你有一个对被弹出的 viewController 的“分配”类型引用,你就会遇到问题。

于 2012-09-26T21:56:22.893 回答