如何正确释放UITabbarController

时间:2011-11-01 12:33:59

标签: objective-c ios memory-management memory-leaks

这可能听起来像是一个新手问题......但是我不熟悉iOS开发。

我已经以编程方式创建了UITabController对象。

mTabBarController = [[UITabBarController alloc] init];
...
mTabBarController.viewControllers = [NSArray arrayWithArray:tabBarItems];
[tabBarItems release];

以dealloc的形式释放mTabBarController。

- (void)dealloc {
    [mTabBarController release];
}

现在我的问题是:我会得到内存泄漏吗?当我赋值t viewController时,tabBarItems的引用计数仍为1.当我发布mTabBarController时它是否还释放了它的所有viewcontrollers?

2 个答案:

答案 0 :(得分:1)

是的,选项卡控制器拥有一组视图控制器(并保留数组中的所有内容)。只要正确释放或自动释放要添加到tabBarItems数组中的项目,就不会产生泄漏。

将对象关系视为所有权确实很有帮助。

答案 1 :(得分:1)

UITabBarController永远不应该被放置为另一个ViewController的子节点,所以你总是必须在dealloc中释放它。如果您的TabBarController视图是应用程序窗口的子视图,则可以不在dealloc中释放它,因为dealloc将被调用的唯一时间是程序关闭时,在这种情况下,控制器将被释放。但是,有些人喜欢在dealloc中释放它,只是为了保持代码的一致性。你做的很好。