- 一鍵加油中亿眠,結(jié)算的時候選擇油號碎罚,彈框的方法中,有個block,但是blcok中使用的self,導(dǎo)致了強(qiáng)引用的問題纳像,返回上級頁面的時候荆烈,不會走 dealloc 方法,也就是通知沒有移除
- 再到充值界面竟趾,支付的時候憔购,會出現(xiàn)2次彈框,因?yàn)橐绘I加油頁面的通知沒有移除
- 【重現(xiàn)bug:進(jìn)入一鍵加油頁面潭兽,選擇完油號就返回倦始,這時是沒有走dealloc的,通知沒移除山卦,再進(jìn)入充值界面鞋邑,執(zhí)行支付后诵次,會出現(xiàn)2次彈框】
- 但是,如果在一鍵加油頁面枚碗,選擇完油號直接支付是沒有問題的逾一。
彈框用的是單例,雖然上次的沒有dealloc,但是再次進(jìn)入一鍵加油的界面肮雨,當(dāng)點(diǎn)了彈框會走dealloc遵堵,是否掉上次的controller,也就把上次多的那個通知移除了
因此,注意block中怨规,不用忘記使用__weak self
- 哪種block會引起強(qiáng)引用陌宿,
- 例如彈框的block, 里面定義了一個strong類型的屬性,接受傳進(jìn)來的block, 就會造成強(qiáng)引用波丰,導(dǎo)致控制器不能釋放
- 但是封裝的網(wǎng)絡(luò)請求部分壳坪,拿到接受的block直接用了,那種情況可以不使用__weak