block和delegate都可以回調天吓,block更輕型龄寞,使用更簡單物邑,能夠直接訪問上下文色解,這樣勒種不需要存儲臨時數(shù)據(jù)科阎,使用block代碼通常會在同一個地方锣笨,這樣讀代碼也連貫错英。delegate更重一些,需要實現(xiàn)接口
delegate:
1簿煌、“一對一”,對于同一個協(xié)議豆励,一個對象只能設置一個代理良蒸,所以單例對象就不能用代理嫩痰;
2丽旅、代理更注重過程信息的傳輸:比如發(fā)起了一個網(wǎng)絡請求榄笙,可能想知道此時請求是否已經(jīng)開始茅撞、是否收到了數(shù)據(jù)米丘、數(shù)據(jù)是否已經(jīng)接受完成拄查、數(shù)據(jù)接受失敗等
block:
1靶累、寫法更簡練,不需要寫protocol邪蛔、函數(shù)等侧到;
2匠抗、block注重結果的傳輸:比如對于一個事件绳军,只想知道成功或者失敗门驾,并不需要知道進行了多少或者額外的一些信息;
3聂沙、block需要注意避免循環(huán)引用逐纬;