objective-c - 从 UITabBarController 中删除所有项目

标签 objective-c ios memory-management uitabbarcontroller

我想从 MainWindow 内的 UITabBarController 中删除所有项目。我可以这样实现:

self.tabViewController.viewControllers = [NSArray array];
self.tabViewController.customizableViewControllers = [NSArray array];

但是那里的旧 Controller 怎么样?这是更正确的方法吗?

- (void)cleanCurrentTabbar {
    for (id ctrl in self.tabViewController.customizableViewControllers) {
        [ctrl release];
    }
    for (id ctrl in self.tabViewController.viewControllers) {
        [ctrl release];
    }
    self.tabViewController.viewControllers = [NSArray array];
    self.tabViewController.customizableViewControllers = [NSArray array];
}

最佳答案

您的第二个选项在内存管理方面也是更正确的概念,因为它在使其为零之前释放所有分配的资源。

但是您可以分配 nil,而不是给它一个空数组(它本身就是一个自动释放的对象,如 [NSArray array])。

- (void)cleanCurrentTabbar {
    for (id ctrl in self.tabViewController.customizableViewControllers) {
        [ctrl release];
    }
    for (id ctrl in self.tabViewController.viewControllers) {
        [ctrl release];
    }
    self.tabViewController.viewControllers = nil;
    self.tabViewController.customizableViewControllers = nil;
}

正如 James Webster 在评论中所说:

“您可能需要也可能不需要释放,具体取决于 viewController 和可定制 ViewController 的属性类型”

希望对你有帮助。

关于objective-c - 从 UITabBarController 中删除所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253658/

相关文章:

objective-c - XCode 4.2 为什么我在 .h 和 .m 文件中看到 @interface

ios - ReactiveCocoa : How do you unit test a RACCommand?

.net 字符串类替代方案

objective-c - -performSelector :onThread:withObject:waitUntilDone: 的内存问题

ios - 如何设置要在特定持续时间内选择的按钮?

带有披露指示器的 iOS 居中 UITableViewCell 标签

ios - 将目录从一个 PDF 复制到另一个

ios - 有 list 时是否需要 Apple 元标记?

ios - 无法在iOS Simulator中将通行证添加到电子钱包,但未记录任何内容

c++ - C++中static的含义