1帜慢、用strong和copy來聲明delegate的情況下,依然可能發(fā)生互相持有的強(qiáng)引用循環(huán)。yytext上的兩個(gè)協(xié)議方法一個(gè)是copy一個(gè)是strong花枫。因?yàn)槲覐拈_發(fā)開始一直是用assign來聲明,看到大牛的代碼我一度懷疑了自己以前是不是都是錯(cuò)的掏膏。后來發(fā)現(xiàn)其實(shí)并沒有所謂對(duì)錯(cuò)劳翰,只要控制的好,并且是需求的應(yīng)用場(chǎng)景即可馒疹。
2佳簸、NSTimer,在容器的生存周期結(jié)束后如果還在執(zhí)行。那么這個(gè)timer就會(huì)因?yàn)闆]有隨著容器釋放而釋放生均。解決方式:新浪的妹紙跟我說听想,放在單利中就好了……我一臉的懵逼,但是解決的方式是這樣的马胧。還有一種假設(shè)汉买,這幾天面試完我會(huì)嘗試一下。vc容器內(nèi)用dispatch_source加上timer佩脊,也就是在開條子線程蛙粘,加上這條 task 然后放在runloop中,然后測(cè)試下vc銷毀后威彰,這條runloop在設(shè)定時(shí)間后銷毀出牧,timer還會(huì)不會(huì)泄漏。因?yàn)槲矣浀胷unloop可以保證線程的生存周期歇盼,不過不管怎么樣舔痕,把可能存在的風(fēng)險(xiǎn),也就是timer或者動(dòng)畫豹缀,用單利伯复,會(huì)變得安全可控很多。
3耿眉、關(guān)于block边翼,大家記得該weak的weak 該strong的strong。