1.first responser是response chain中的第一响应者,如果该响应者能够执行此响应(action),则次相遇不会继续在响应链中向上层传递,如果不能则会继续在响应链中继续传递,直到完成(可能最后也不能响应)
2.protocol实现的deleagere,这个就是1对1的传递某个action
3.通知就是1对多的传递某个action(相当于订阅)
那么区别在哪里呢?
如图,我们可以把view的层级,或者说view controller 的层级
1.个人觉得如果是D-》B这样的从下到上的调用,那么可以使用delegate
2.如果是E->F,F->E这样的调用,最好用通知机制,因为你很难获取到你通知对象的实例,就算能够,你的设计上也会很杂乱
3.如果是D-》A这样的调用,最好就用到response chain,当然也可以用通知,但是通知是1对多的,如果其他人刚好也使用了,那么就可能和你当初的设计初衷就不一样了,如果使用的是first responser,那么你的响应只会在你当前的response chain中传递,不会传递到未知的地方去了。特别是在你的层级之间很复杂或者根本无法判断出中间层级有什么界面的时候,response chain就是一种很好的设计方式了