delegate和block如何选择

1.如果对象有超过一个以上不同的事件源,使用delegation

注解:用block解决多个事件源有两种方法 1. 为每个事件源写相应的block,这显然是不合理的 2.写一个可以接受任何事件的block,这种写法不简单且不宜读;

2.一个对象只有一个delegate,所以单例对象不要使用delegate。

注解:可以想象CLLocationManager是个单例对象,当地理位置变化的时候,需要不停的切换delegate指针到所需要数据的这个单例对象上去,显然是不合理的

3.delegate面向的是过程,block面向的是结果

注解:在delegate的数据源和代理方法中我们总是能看到,一系列的过程方法比如,我将要做什么(如:willSendRequest,将要发送请求)、到目前为止我知道的信息(如:canAuthenticateAgainstProtectionSpace)、我已经完成这些啦(didReceiveResponse,收到请求的回复,即完成请求)而block只是一个请求结果,并知道请求是否成功,面向结果的一个过程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容