【问题标题】:Releasing a ViewController?释放 ViewController?
【发布时间】:2013-02-22 13:13:56
【问题描述】:

我有一个UITabBar 应用程序,它有 5 个选项卡 (viewControllers)。其中有一个viewController,我想在它不活动时发布它我认为它是通过viewDidUnload,但我不知道如何。我需要这个的代码,拜托。

编辑:我只想知道如何在 viewController 不活动时正常释放它。

【问题讨论】:

  • 抱歉,这个视图控制器是从哪里引用的?
  • 其实我是初学者,我不能清楚地理解你的评论......如果我没记错的话,它来自 PagedScrollViewController4.h, PagedScrollViewController4.m .. 对不起,如果问题不清楚
  • 为了更清楚,我只想如何正常释放任何 viewController : 我的应用不使用 ARC
  • 问题是标签栏之类的东西保留了对视图控制器的引用,所以我想知道 this 视图控制器是从哪里引用的。
  • 给我几分钟,我会知道,我会告诉你

标签: ios memory-management viewcontroller


【解决方案1】:

您必须从视图控制器外部释放视图控制器 - 它不能释放自己...

例如当您切换到另一个选项卡时,您可以释放 UITabBar 类中最后一个选项卡的视图控制器。

加法

查看您的评论,释放视图控制器是完全错误的做法(除此之外,UITabBarController 旨在保持其所有视图控制器始终正常运行)。

您应该实现一个函数来刷新视图控制器中的书签,并在书签视图控制器出现时调用它(viewWillAppear 函数),或者当书签视图控制器出现时,如果出于任何原因在 UITabBarController 的委托中需要调用它已选中(委托函数(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController)。

也许你应该read up on the UITabBarController here

【讨论】:

  • 如果你不持有对那个视图控制器的引用......那么你就不用担心它......标签栏控制器会在它被释放时释放那个视图控制器完成它。为什么切换标签时要释放视图控制器?
  • 我要发布的标签是书签标签..我需要发布它只是为了在添加新书签时显示新书签..所以我需要重新打开应用程序才能看到新书签.. 但是如果它是发布的,我不需要这样做
  • @TheEye 谢谢你的巧妙回答!但是假设这个书签选项卡是一个 NSMutableArray,它被称为“收藏夹”,我通过self.pageImages = favorited; 查看它,你能告诉我如何在通过viewWillAppear 选择它时刷新它,再次感谢您:)
  • 你应该把你的书签视图控制器的代码贴出来,否则不清楚你在做什么。
  • 我快速浏览了一下 - 在 vi​​ewDidLoad 函数中完成的 pageImages 数组的所有初始化工作都应该在 viewWillAppear 函数中完成,那么应该没问题。请注意不要在 viewWillAppear 中创建任何视觉元素(因为它会被更频繁地调用)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2012-03-12
  • 2012-09-13
  • 1970-01-01
  • 2012-02-27
  • 2018-11-08
  • 1970-01-01
相关资源
最近更新 更多