大家对iOS代码中的循环引用导致内存泄漏都很了解,本博试图进一步完善和补充这一主题,谈谈间接循环引用造成泄漏的问题。
直接内存泄漏
直接内存泄漏是显而易见的,你不发现都难,举个例子:
class RootView:UIView{
var timeCounterView:TimeCounterView?
func pauseOrGoOnTimer() {...}
func resetTimer() {...}
}
class TimeCounterView:UIView{
var timerDidModifiedCallback:((TimerModfiyAction)->Void)?
}
现在RootView里有一个initView()方法,用来初始化,里面需要设置timeCounterView的回调:
func initView(){
timeCounterView = CounterView.create(with: cu)
if let timeCV = timeCounterView{
timeCV.timerDidModifiedCallback = {action in
self.otherSetupInvoke()
switch action{
case .puaseOrGoOn:
// 当计时暂停或继续时,执行对应的操作
timeCV.pauseOrGoOnTimer()
case .reset:
// 当计时取消或完成时重置计时器
timeCV.resetTimer()
}
}
}
}
首先
非自由程序员,CSDN博客认证专家。CSDN汇编板块版主, CSDN其他开发语言大版版主。对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。