ios - 切換根視圖控制器後如何釋放掉上一個視圖控制器?
扔个三星炸死你
扔个三星炸死你 2017-07-01 09:12:25
0
2
1385

比如說:啟動APP後進入的第一個VC是廣告VC,這個時候的根視圖控制器是廣告VC,幾秒後跳到主頁VC,這時候我將根視圖控制器切換到主頁VC。由於我不再需要回到廣告VC,所以我想將廣告VC釋放掉,有什麼辦法?
解決過這種問題的同學分享下。

扔个三星炸死你
扔个三星炸死你

全部回覆(2)
给我你的怀抱

最早我測試過這種情況,這樣的廣告VC並不會被自動釋放,也就是說一直佔用著內存,不過相當少而已

你可以找到廣告vc的指標變量,設為nil,此操作應在下一個介面出現之後再進行以避免視圖突然變換

另一種,可以在廣告vc的生命週期方法viewDidDisappear方法中,手動清除控制指針,如self.view = nil,廣告的UIImageView,另外由於廣告只需加載一次且是大控件圖,最好使用contentsOfFile方式

代言

直接修改WindowrootController可以釋放之前的廣告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;
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板