一個(gè) Retain Cycle 的坑

兩次踩了同一個(gè)坑,特此記錄下

self.redView = ({
    UIView *view = [DFCustomView new];
    view.backgroundColor = [UIColor redColor];
    [view setOnClickListener:^{
        // 引用 self 導(dǎo)致無法 Controller 無法被釋放,這種情況 Xcode 沒有警告
    [self instanceMethod];
    }];
    
    view;
});
DFRedView *redView = [DFRedView new];
[redView setOnClickListener:^{
    // 要用 weakSelf
    [self foo];
];
self.redView = redView;

局部變量的 block 中引用 self 是沒有警告的,盡量都用 weakSelf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容