简化一堆处理程序

时间:2017-02-01 05:21:19

标签: ios objective-c handler long-polling

假设我们有一个轮询方法,它使用一个服务并基于响应(eventType)调用一个处理程序,就像(只是想法):

-(void)pollData {
     [[ProjectApi sharedInstance] getEvent:^(NSDictionary *event){
          EventType type = /*Take eventType*/
          switch (type) {
               case type1:
                    [self handleType1WithResponse:event];
                    break;
               case type2:
                    [self handleType2WithResponse:event];
                    break;
               ...
               case typeN:
                    [self handleTypeNWithResponse:event];
                    break;

          }
     }];
}

正如你所看到的那样,有一堆处理程序,是否有一种简化这种模式(或者更优雅的方式,一个目标是减少ViewController的责任,但是这个方法中的一些可以与控制器交互)? (除了委托或通过处理程序创建类)。

1 个答案:

答案 0 :(得分:0)

一种方法:从某个标量类型构造一个字符串...

int type = 7;  // say it's an int
NSString *string = [NSString stringWithFormat:@"handleType%dWithResponse:", type];

然后从字符串构建一个选择器:

SEL selector = NSSelectorFromString(string);

然后执行选择器。 (首先测试你是否有方法也不是一个坏主意)...

if ([self respondsToSelector:selector]) {
   [self performSelector:selector withObject:event];
}