从 UIView 中删除 UIViewController 并释放内存

发布于 2025-01-10 15:15:45 字数 495 浏览 2 评论 0原文

我使用以下方法在另一个 UIView 中添加 UIViewController:

self.addChild(vc)
self.view.addSubview(vc.view)
vc.didMove(toParent: self)

并通过以下方式删除该 UIViewController:

for childVC in self.children {
   childVC.willMove(toParent: nil)
   childVC.view.removeFromSuperview()
   childVC.removeFromParent()
}

UIViewController 从视图中删除,但该 UIViewController 的 deinit 未调用,并且不会释放该 UIViewController 的内存。

我没有为它分配任何可能导致强引用循环的委托,我还需要记住什么才能从内存中释放它?还有其他办法吗?

I'm adding UIViewController in another UIView using:

self.addChild(vc)
self.view.addSubview(vc.view)
vc.didMove(toParent: self)

and removing that UIViewController by:

for childVC in self.children {
   childVC.willMove(toParent: nil)
   childVC.view.removeFromSuperview()
   childVC.removeFromParent()
}

UIViewController remove from view but deinit of that UIViewController is not calling and it does not release memory of that UIViewController.

I'm not assigning any delegate to it that might cause strong reference cycle, what other thing I've to keep in mind to release it from memory too? Any other way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文