在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在navtionViewController的子控制器A中,将B控件作为其的一个属性,在定义B控件的一个block,并在此block中引用了A控制器的属性,block此时捕获了A,就形成了间接的循环引用。 navtionViewController -> A A->B B->blcok block -> A.someProps === block =>A 即使用户退出了A控制器,即A控制器调用了pop方法,也就是navtionViewController不再引用A了,但是B的block还是引用了A,此时A的实例还会保存在内存中,不会被释放。内存泄漏就出现了
解决方法,在定义block的时候,在其参数前面使用[weak self]或者[unowned self]。 如何选择弱引用,还是无主引用? 当闭包和捕获的实例总是互相引用时并且总是同时销毁时,将闭包内的捕获定义为无主引用(使用[unowned self])。 相反的,当捕获引用有时可能会是
|
请发表评论