BLOCK迴圈引用

2022-08-30 22:36:18 字數 500 閱讀 4652

何時block才會迴圈引用

-為什麼block會迴圈引用: 我們很多行為會導致block的copy,而當block被copy時,會對block中用到的物件產生強引用(arc下)或者引用計數加一(mrc下)。 

如下:

@property(nonatomic, readwrite, copy) completionblock completionblock;

//發生迴圈引用!怎麼辦?

self.completionblock = ^

}};

@property(nonatomic, readwrite, copy) completionblock completionblock;

//完美解決

__weak typeof(self) weakself = self;

self.completionblock = ^

};

block 迴圈引用

結論 block作為成員變數,內部引用self的成員變數,必須使用self 弱引用 block作為區域性變數,無論怎樣寫,都不會對self造成強引用 block為變數 1 block為成員變數 typedef nsstring blockcc void inte ce twoviewcontroll...

block迴圈引用

底層原始碼 typedef void ghblock void struct main block impl 0 static void main block func 0 struct main block impl 0 cself static void main block copy 0 st...

block迴圈引用問題

ios開發中,開了arc模式,系統自動管理記憶體,如果程式中用到了block就要注意迴圈引用帶來的記憶體洩露問題了 這幾天遇到乙個問題,正常頁面dismiss的時候是要呼叫dealloc方法的,但是我的程式就是不呼叫,研究了好久終於找到了問題出在 了 起初的 如下 void getmyrelated...