list 4.1
- (void)applicationDidFinishLaunching:(UIApplication *)application {
tabBarController = [[UITabBarController alloc] init];
MyViewController* vc1 = [[MyViewController alloc] init];
MyOtherViewController* vc2 = [[MyOtherViewController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
tabBarController.viewControllers = controllers;
// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
}
View Controller 已分配但未释放。 vc2 和 vc2 添加到数组后不应该发布吗?
最佳答案
除非我遗漏了什么,否则应该发布 vc1 和 vc2 是对的。您发布的方法分配了 View Controller ,因此它应该将它们保存在实例变量中以便以后可以释放它们,或者它应该继续并在将它们添加到数组后释放它们。
然而,从实际意义上讲,这并不重要。在基于选项卡的应用程序中,与选项卡 Controller 相关联的 View Controller 通常会在应用程序的整个生命周期内保持不变。当应用程序终止时,这些对象无论如何都会被清理掉。这也不完全是泄漏,因为选项卡 Controller 仍然引用 vc1 和 vc2 指向的对象,但它已经接近泄漏,但不会成为真正的泄漏。
不过眼睛不错。您应该考虑就此向 Apple 提交错误。
关于objective-c - 在苹果示例代码中释放 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381460/