天天看點

[self presentViewController:vc animated:YES completion:nil]的互相引用問題

在做登陸界面時。啟動後進入掃碼登陸界面,在掃碼登陸界面點選調用

[self presentViewController:vc animated:YES completion:nil];

進入賬号登陸界面,然後登陸成功後調用

 LJMainTabbarController * mainVc = [[LJMainTabbarController alloc] init];

 [UIApplication sharedApplication].keyWindow.rootViewController = mainV

發現掃碼登陸界面和賬号登陸界面都不被銷毀,不調用dealloc方法

原因:在vc1 presentViewController:vc2 時,vc1 和vc2會互相持有,就是說vc1 和vc2 會互相引用,此時切換了rootViewController,但是vc1和vc2必然不會銷毀。

解決辦法 在[UIApplication sharedApplication].keyWindow.rootViewController = mainV 後面加上一句代碼

[self dismissViewControllerAnimated:NO completion:nil];

打破vc1 和vc2 的互相持有,系統就能正常的銷毀二者了。