这可能听起来像是一个新手问题......但是我不熟悉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?
答案 0 :(得分:1)
是的,选项卡控制器拥有一组视图控制器(并保留数组中的所有内容)。只要正确释放或自动释放要添加到tabBarItems数组中的项目,就不会产生泄漏。
将对象关系视为所有权确实很有帮助。
答案 1 :(得分:1)
UITabBarController永远不应该被放置为另一个ViewController的子节点,所以你总是必须在dealloc中释放它。如果您的TabBarController视图是应用程序窗口的子视图,则可以不在dealloc中释放它,因为dealloc将被调用的唯一时间是程序关闭时,在这种情况下,控制器将被释放。但是,有些人喜欢在dealloc中释放它,只是为了保持代码的一致性。你做的很好。