比如說:啟動APP後進入的第一個VC是廣告VC,這個時候的根視圖控制器是廣告VC,幾秒後跳到主頁VC,這時候我將根視圖控制器切換到主頁VC。由於我不再需要回到廣告VC,所以我想將廣告VC釋放掉,有什麼辦法?
解決過這種問題的同學分享下。
给我你的怀抱2017-07-01 09:14:25
最早我測試過這種情況,這樣的廣告VC並不會被自動釋放,也就是說一直佔用著內存,不過相當少而已
你可以找到廣告vc的指標變量,設為nil
,此操作應在下一個介面出現之後再進行以避免視圖突然變換
另一種,可以在廣告vc的生命週期方法viewDidDisappear
方法中,手動清除控制指針,如self.view = nil
,廣告的UIImageView
,另外由於廣告只需加載一次且是大控件圖,最好使用contentsOfFile
方式
代言2017-07-01 09:14:25
直接修改Window
的rootController
可以釋放之前的廣告VC.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
_window.backgroundColor = [UIColor whiteColor];
_window.rootViewController = [ADViewController new];
[_window makeKeyAndVisible];
// 2.0秒后跳转到mainController
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
MainViewController *VC = [MainViewController new];
// 修改 rootViewController 后, ADViewController会释放
_window.rootViewController = VC;
});
return YES;
}