Ios 从ViewDidDisplay()调用函数会导致内存泄漏,但从ViewWillLayoutSubViews()调用函数不会导致内存泄漏
我试图理解,如果从ViewDidDisplay而不是ViewWillLayoutSubviews调用同一个函数,为什么会导致内存泄漏 我有两个扩展,将视图的子层与其边界相匹配:Ios 从ViewDidDisplay()调用函数会导致内存泄漏,但从ViewWillLayoutSubViews()调用函数不会导致内存泄漏,ios,swift,xcode,Ios,Swift,Xcode,我试图理解,如果从ViewDidDisplay而不是ViewWillLayoutSubviews调用同一个函数,为什么会导致内存泄漏 我有两个扩展,将视图的子层与其边界相匹配: extension CALayer { func fit(rect: CGRect) { frame = rect sublayers?.forEach { $0.fit(rect: rect) } } } extension UIView { func fitLayers
extension CALayer {
func fit(rect: CGRect) {
frame = rect
sublayers?.forEach { $0.fit(rect: rect) }
}
}
extension UIView {
func fitLayers() {
layer.fit(rect: bounds)
}
}
来自viewDidAppear的相同调用priorityButton.fitLayers()
不会取消分配图层对象。两人都按预期完成了工作,工作也很好,但我想知道为什么会这样
谢谢 我想它与
UIViewController
生命周期有关,当您在viewWillLayoutSubiews
中调用此函数时,因为视图将进行布局,所以没有问题,但当从viewdidedisappease
调用时,所有UIViewController
布局方法都会再次调用,因为您的函数是布局的东西<代码>UIViewController此处解释了生命周期: