Objective c 在apple示例代码中释放视图控制器
在这里 在清单4.1中Objective c 在apple示例代码中释放视图控制器,objective-c,ios,memory-management,Objective C,Ios,Memory Management,在这里 在清单4.1中 - (void)applicationDidFinishLaunching:(UIApplication *)application { tabBarController = [[UITabBarController alloc] init]; MyViewController* vc1 = [[MyViewController alloc] init]; MyOtherViewController* vc2 = [[
- (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添加到阵列后,是否应该发布它们?除非我遗漏了什么,否则应该发布vc1和vc2是正确的。您发布的方法分配了视图控制器,因此它应该将它们保存在实例变量中,以便以后可以释放它们,或者在将它们添加到数组后继续释放它们 然而,从实际意义上讲,这其实并不重要。在基于选项卡的应用程序中,与选项卡控制器关联的视图控制器通常会在应用程序的整个生命周期中保持不变。当应用程序终止时,这些对象将被清除。这也不是一个很大的泄漏,因为tab控制器仍然有对vc1和vc2指向的对象的引用,但它几乎接近泄漏,而不会成为真正的泄漏 不过眼睛不错。你应该考虑对苹果提出一个错误。