【问题标题】:Is previous ViewController release the memory after changing the Rootviewcontroller programmatically?以前的 ViewController 是否在以编程方式更改 Rootviewcontroller 后释放内存?
【发布时间】:2015-12-21 12:08:45
【问题描述】:

我有关于 iOS 内存管理的查询。当我登录到特定的应用程序并进行注册过程时,在第 4 个屏幕之后,我必须跳转到主屏幕。所以我不需要前 4 个屏幕。所以我称之为下面的方法

AppDelegate *appdelegate = [[UIApplication sharedApplication] delegate];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *root=[storyboard instantiateViewControllerWithIdentifier:@"trend_navigation"];
appdelegate.window.rootViewController = root;
[appdelegate.window makeKeyAndVisible];

我的问题是,以前的屏幕仍然出现在主屏幕的后面还是会释放内存?

【问题讨论】:

标签: ios uistoryboard


【解决方案1】:

如果没有对您的视图控制器或它们分配的任何结构的其他强引用,是的,它们将被自动释放(前提是您使用 ARC,当然这是默认设置)。

请注意,您的视图控制器保留在内存中的原因可能有很多,包括任何未失效的计时器、块引用等。

您可以使用Instruments检查您的对象是否正确释放。

【讨论】:

  • 如果之前的viewcontrollers中存在强引用,如何自动释放内存?或者我们必须释放它?怎么样?
  • 您的视图控制器是否有来自的强引用并不重要。如果您有您的视图控制器的强引用,这很重要。如果您有任何此类引用,您只需在不再需要时清除它们 (variableVariableThatIsAStrongReferenceToTheViewController = nil)。
  • 请注意,在大多数情况下,您应该没有任何理由对视图控制器有任何强引用。
猜你喜欢
  • 2014-05-04
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多