block中的內存管理

在arc下

一、a強引用b,b強引用a,b是a的全局變量(這個時候會形成循環引用)作用域

二、a強引用b,b強引用a,b是a的局部變量(這個時候是不會形成循環引用的)class

三、a強引用b,b中的block是一個方法參數,b是a的全局變量(這個時候不會形成循環引用)變量

四、a強引用b,b中的block是一個屬性,b是a的全局變量(這個時候會形成循環引用)循環

PS:三、4是在一、2的狀況下添加了一個block,是一、2的細分,因此若是是2的狀況那麼不會形成循環引用問題,咱們考慮在1的狀況下。引用

分析:方法

2狀況不會形成循環引用,是由於b是a的局部變量,b在離開做用域後就被釋放了,不是在a的delloc方法中釋放的,因此不會形成循環引用di

3狀況不會形成循環引用,是由於block是b的一個參數變量,在離開做用域後block就被釋放了,對a的引用也就消失了block

相關文章
相關標籤/搜索