以前的 ViewController 是否在以编程方式更改 Rootviewcontroller 后释放内存?
Is previous ViewController release the memory after changing the Rootviewcontroller programmatically?
我在 iOS 中有与内存管理相关的查询。当我登录到特定应用程序并执行注册过程并在第 4 个屏幕之后,我必须跳转到主页 screen.so 我不需要前 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,当然,这是默认设置)。
请注意,您的视图控制器保留在内存中的原因可能有很多,包括任何未失效的计时器、块引用等。
您可以使用Instruments检查您的对象是否正确释放。
我在 iOS 中有与内存管理相关的查询。当我登录到特定应用程序并执行注册过程并在第 4 个屏幕之后,我必须跳转到主页 screen.so 我不需要前 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,当然,这是默认设置)。
请注意,您的视图控制器保留在内存中的原因可能有很多,包括任何未失效的计时器、块引用等。
您可以使用Instruments检查您的对象是否正确释放。