由于内部保留周期,未释放ViewController

Car*_*los 8 memory memory-leaks ios uiviewcontentmode swift

我的某些视图控制器从视图中弹出后没有被释放。我已经摆脱了其他强引用,因此我通过引用形式_externalObjectsTableForViewLoading保留了此内部保留周期。这是一个私有的UIViewController属性,所以我自己无法清除它。我不知道iOS是否有API可以清除它,或者为什么弹出视图控制器后不能清除它。

我已经测试过我的应用程序在iOS 11和12中都处于“发布”模式下运行。在Instruments中运行该应用程序会渲染Xcode中看到的相同阶梯模式,并保留视图控制器。

有任何想法吗?提前致谢!

保持周期

Ale*_*one 1

在您的问题中,一个视图控制器是否正在访问另一个视图控制器?我们的问题是另一个 viewController 中存在对回调的非弱引用。

正如您和其他帖子中提到的,_externalObjectsTableForViewLoading是一个 viewController 私有属性,而是一个与故事板相关的属性。这让我认为您的代码通过回调或通过对其实例的直接属性引用对另一个作为视图控制器的对象具有强引用。