objective-c - 在苹果示例代码中释放 View Controller

标签 objective-c ios memory-management

这里 http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/TabBarControllers/TabBarControllers.html

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/

相关文章:

iphone - valueForKey 只返回内存地址而不返回实际值

ios - 在iOS 6中可以接受子类化UITabBarController吗?

ios - 将本地 PDF 文件加载到 WebView

ios - 打开 sqlite 数据库

ios - 将正数转换为负数 - iOS

ios - 如何在后面创建带有水印 UIImageView 的 UIView?

ios - XMPPFramework - 如何接收名册的存在信息以及名册列表?

c - 堆栈上的总变量大小是否有限制?

c - 内存分配和内存泄漏: C

objective-c - 释放一个对象后赋值 'nil'有什么用