為什么代理要用weak馏艾?
答:因為使用weak是弱引用昨悼,外部可以釋放對象歼捐。指明該對象并不負責保持delegate這個對象,delegate這個對象的銷毀由外部控制你画。如果使用strong對象保持delegate對象造成循環(huán)引用抵碟,對象無法釋放內存泄漏。
代理的delegate和dataSource有什么區(qū)別坏匪?
delegate偏重于用戶交互的回掉拟逮。dataSource偏重于數(shù)據(jù)的回調。
block和代理的區(qū)別?
“代理和block的共同特性是回調機制适滓,不同的是敦迄,代理的方法比較多,比較分散凭迹。
使用block的代碼比較集中統(tǒng)一罚屋。”
代理的好處:
delegate運行成本低嗅绸。block成本很高的脾猛。
block出棧需要將使用的數(shù)據(jù)從棧內存拷貝到堆內存,當然對象的話就是加計數(shù)鱼鸠,使用完或者block置nil后才消除猛拴;delegate只是保存了一個對象指針,直接回調蚀狰,沒有額外消耗漆弄。相對C的函數(shù)指針,只多做了一個查表動作