ios - 由于内部保留周期,ViewController 没有被释放
问题描述
我的一些视图控制器在从视图中弹出后不会被释放。我已经摆脱了其他强引用,所以我留下了这个通过引用表单 _externalObjectsTableForViewLoading 保存的内部保留周期。这是一个私有的 UIViewController 属性,所以我无法自己清除它。我不知道 iOS 是否有 API 可以清除它,或者为什么在弹出视图控制器后它没有被清除。
我已经在 iOS 11 和 12 中以发布模式运行我的应用程序进行了测试。在 Instruments 中运行应用程序会呈现在 Xcode 中看到的相同楼梯模式,并保留视图控制器。
有任何想法吗?提前致谢!
解决方案
在您的问题中,一个 viewController 是否正在访问另一个 viewController?我们的问题是在另一个 viewController 中有一个对回调的非弱引用。
正如您和其他帖子中提到的那样,它_externalObjectsTableForViewLoading
是一个 viewController 私有属性,而是一个与故事板相关的属性。这使我认为您的代码通过回调或通过对其实例的直接属性引用对另一个作为视图控制器的对象具有强引用。
推荐阅读
- jquery - Jquery Datepicker onSelect 不起作用
- apache-pig - Apache pig如何在执行连接操作时从一个关系中选择所有列
- java - 为什么使用 java 扫描仪从 txt 文件中读取的字符串不等于相同的字符串?
- java - Spring Boot中的分页循环关联数据
- cors - Azure Kubernetes 服务 (AKS) - 具有 CORS 访问权限的 Http 应用程序路由
- ios - 反应本机和 Firebase 错误 403
- ios - 构建成功后将文本文件安装/导入到物理设备时 Xcode 崩溃 (RangeException)
- mysql - Mysql ON UPDATE CASCADE - 如何正确设置
- javascript - 服务器UTC时间和date.js getTimezoneOffset不同
- scala - Scala 代码在 NiFi 中无法正常工作