1.Delegate
delegate俗称“代理”或“委托”,是IOS框架中使用最为普遍的方法,没有之一。常见代表有UIScrollView,UITableView等
适用环境:UI事件响应,或者是频繁调用的情况,偏向于过程,各种状态的记录。
优点:
a.较为清晰的语法定义。
b.可以很好的避免循环应用,导致内存泄漏问题。
c.适用于多种(>=6)方法以上的回调方式
缺点:
a.较为重量级,代理的申明和实现不在同一个文件,易读性较差。
b.书写比较麻烦,需要定义多个方法。
c.一对一通信,多个对象时不太实用。
2.Block
block俗称“块”,个人理解有点类似于c语言中的函数指针,也是IOS框架中经常使用的方法之一,常见于一些第三方库中,例如:AFNetworking网络框架等。
适用环境:使用不频繁的情况,单一调用,强调结果。
优点:
a.代码易读性较高
b.可直接利用上下文,但注意避免循环引用。
c.轻量级,使用方便,比较推荐使用。
缺点:
a.容易造成循环引用,__weak记得用好。
b.一对一通信,功能单一,目的性较强。
3.NSNotification
notification俗称“通知”,也是IOS框架中经常使用的传值方式之一,功能很强大,也不那么容易掌控。常见于系统的键盘状态变化,App的生命周期变化。
适用环境:层/功能通信,减小耦合,多对象通信。
优点:
a.使用方法简单。
b.多对象通信。
c.跨层通信。
缺点:
a.比较耗性能。
b.不用时需要移除通知的监听,较为麻烦.