39、用handler块降低代码分散程度

​ 笔者建议使用同一个块来处理成功与失败的情况:

  • 缺点:全部逻辑写在一起会比较长和复杂

  • 优点:处理成功响应的过程中可能会发现错误(更灵活)

​ 有时需要在相关时间点指向会掉操作,这种情况也可以使用handler块。

NSNotificationCenter就提供了一个参数,可以让调用这指定块在哪个队列里执行。默认是跟通知同一个线程:

- (id)addObserverForName:(NSString *)name 
                                  object:(id)object 
                   queue:(NSOperationQueue *)queue 
              usingBlock:(void(^)(NSNotification *)block

要点:

  • 在创建对象时,可以使用内联的handler块将相关业务逻辑一并声明

  • 在有多个实例需要监控时,如果采用委托模式,那么经常需要根据传入的对象来切换,而该用handler块来实现,则可直接将块与相关对象放在一起

  • 设计API时如果用到了handler块,那么可以增加一个参数,使调用这可以通过此参数来决定应该把块安排在哪个队列上执行

Last updated

Was this helpful?