在我的应用程序中,我有一个MainViewController,用户可以在其中添加,删除和重新排序CollectionView中的项目。每个“收藏夹视图单元”都会启动对新VC(下图中的第n个VC)的筛选。从新呈现的vc用户可以返回MainVC或选择到下一个(或上一个)VC,也可以从MainVCs集合视图访问该VC。
由于“集合视图”中项目的顺序是动态的,因此我将实例化下一个VC,然后将其呈现:
let nextVC = storyboard?.instantiateViewController(withIdentifier: "NextVC")
present(nextVC!, animated: true, completion: nil)
我的问题是():
如果在以下情况下使用unwind segue,是否需要担心内存泄漏? 用户点击goBackToMainVC(即以前 实例化的VC是否会自动关闭?)
如果用户决定不返回MainVC,我是否应该在提出新的VC之前关闭当前的VC?如果是这样,我应该在哪里调用dismiss
函数?
编辑:附加问题: 会添加
if (presentingViewController?.restorationIdentifier != "MainVC") {
presentingViewController?.dismiss(animated: false, completion: nil)
}
从MainVC中的集合视图访问的每个VC解决了我的问题吗?
答案 0 :(得分:1)
如果要撤消或退回到主控制器,它将取消分配在演示时加载的已加载视图控制器。也就是说,没有提供对这些视图控制器的任何强烈引用。
要验证是否已取消分配视图控制器,可以在通过deinit关闭控制器时将某些内容打印到控制台。
deinit {
print("deinit called")
}
答案 1 :(得分:1)
从当前模态搜索调用 dismiss
撤消搜索。这就是轻松的情节是。因此,无需进行特殊的内存管理。