代理优点
-代理语法清晰,可读性高,易于维护
-它减少代码耦合性,使事件监听与事件处理分离
-一个控制器可以实现多个代理,满足自定义开发需求,灵活性较高
代理缺点:
-实现代理的过程较繁琐
-跨层传值时加大代码的耦合性,并且程序的层次结构也变得混乱
-当多个对象同时传值时不易区分,导致代理易用性大大降低
block优点:
-语法简洁,代码可读性和维护性较高
-配合GCD优秀的解决多线程问题
block缺点:
-Block中得代码将自动进行一次retain操作,容易造成内存泄漏
-Block内默认引用为强引用,容易造成循环应用
运行成本:
delegate运行成本低,block的运行成本高
-block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是假引用技术,使用完block置nil才会消除
-delegate只是保存了一个对象的指针,直接回调,没有额外的消耗。就像c的函数指针,只多了一个查表动作
网友评论