在Apple示例代码中释放视图控制器

时间:2011-06-17 04:49:53

标签: objective-c ios memory-management

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

列于清单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];
    }

视图控制器已分配但未释放。在将vc2和vc2添加到阵列后,是否应该释放它?

1 个答案:

答案 0 :(得分:2)

除非我遗漏了什么,否则你应该释放vc1和vc2。您发布的方法会分配视图控制器,因此它应该将它们保存在实例变量中,以便以后可以释放它们,或者它应该继续并在将它们添加到数组后释放它们。

但实际上,它确实无关紧要。在基于选项卡的应用程序中,与选项卡控制器关联的视图控制器通常会在应用程序的生命周期内保持不变。当应用程序终止时,无论如何都会清理这些对象。这也不是一个泄漏,因为标签控制器仍然引用了vc1和vc2所指向的对象,但它几乎就像你可以得到的那样泄漏而不会成为真正的泄漏。

但是,好的眼睛。您应该考虑向Apple提交有关此问题的错误。

相关问题