一個對象中強引用了block,在block中又強引用了該對象,就會發射循環引用。
解決方法是將該對象使用__weak或者__block修飾符修飾之后再在block中使用。
id weak weakSelf = self; 或者 weak __typeof(&*self)weakSelf = self該方法可以設置宏
id __block weakSelf = self;
或者將其中一方強制制空xxx = nil。
檢測代碼中是否存在循環引用問題,可使用 Facebook 開源的一個檢測工具FBRetainCycleDetector。