Ios 以前的ViewController是否在以编程方式更改Rootviewcontroller后释放内存?

Ios 以前的ViewController是否在以编程方式更改Rootviewcontroller后释放内存?,ios,uistoryboard,Ios,Uistoryboard,我有一个关于iOS内存管理的查询。当我登录到特定的应用程序并执行注册过程时,在4个屏幕之后,我必须跳入主屏幕。因此,我不需要前4个屏幕。所以我称之为下面的方法 AppDelegate *appdelegate = [[UIApplication sharedApplication] delegate]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UINavigationCont

我有一个关于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];

我的问题是,以前的屏幕仍然存在于主屏幕的后面,或者将释放内存?

如果没有其他对视图控制器或其分配的任何结构的强引用,则会自动释放它们(当然,如果您使用默认的ARC)

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


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

如果以前的ViewController中存在强引用,它如何自动释放内存?还是我们必须释放它?怎么做?如果视图控制器中有强引用,这并不重要。如果对视图控制器有强引用,这很重要。如果您有任何此类引用,您只需在不再需要时清除它们(
VariableVariableThatIsaStrongReferenceToEviewController=nil
)。请注意,在大多数情况下,您不应该有任何理由对视图控制器进行任何强引用。