1.如果對象有超過一個以上不同的事件源,使用delegation
注解:用block解決多個事件源有兩種方法 1. 為每個事件源寫相應的block,這顯然是不合理的 2.寫一個可以接受任何事件的block,這種寫法不簡單且不宜讀;
2.一個對象只有一個delegate,所以單例對象不要使用delegate。
注解:可以想象CLLocationManager是個單例對象,當地理位置變化的時候,需要不停的切換delegate指針到所需要數據的這個單例對象上去,顯然是不合理的
3.delegate面向的是過程,block面向的是結果
注解:在delegate的數據源和代理方法中我們總是能看到,一系列的過程方法比如,我將要做什么(如:willSendRequest,將要發送請求)、到目前為止我知道的信息(如:canAuthenticateAgainstProtectionSpace)、我已經完成這些啦(didReceiveResponse,收到請求的回復,即完成請求)而block只是一個請求結果,并知道請求是否成功,面向結果的一個過程