iOS间接循环引用造成内存泄漏一例

大家对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认证博客专家 Swift Objective-C Xcode
非自由程序员,CSDN博客认证专家。
CSDN汇编板块版主, CSDN其他开发语言大版版主。

对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值