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

时间:2018-11-08 04:37:24

标签: ios swift memory memory-leaks uiviewcontentmode

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

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

有什么想法吗?预先感谢!

Retain Cycle

1 个答案:

答案 0 :(得分:0)

在您的问题中,一个viewController是否正在访问另一个viewController?我们的问题是在另一个viewController中对回调的引用很弱。

正如您和其他文章中提到的,_externalObjectsTableForViewLoading是viewController的私有属性,但是与情节提要相关的属性。这使我认为您的代码通过回调或通过对其实例的直接属性引用对另一个对象(即视图控制器)具有强引用。