Block 04 - 循環(huán)引用
在 ARC 環(huán)境下解決循環(huán)引用
-
使用 __weak、__unsafe_unretained:
__weak typeof(self) weakSelf = self; self.block = ^{ [weakSelf sayHello]; };
__unsafe_unretained typeof(self) weakSelf = self; self.block = ^{ [weakSelf sayHello]; };
-
使用 __block(不推薦):
__block typeof(self) weakSelf = self; self.block = ^{ [weakSelf sayHello]; weakSelf = nil; };
必須調用 Block闹啦,Block 內部必須將 weakSelf 置為 nil趾断。
在 MRC 環(huán)境下解決循環(huán)引用
-
使用 __unsafe_unretained:
__unsafe_unretained typeof(self) weakSelf = self; self.block = ^{ [weakSelf sayHello]; };
-
使用 __block:
__block typeof(self) weakSelf = self; self.block = ^{ [weakSelf sayHello]; };