【问题标题】:Simplify a Bunch of Handlers简化一堆处理程序
【发布时间】:2017-02-01 05:21:18
【问题描述】:

假设我们有一个轮询方法,它使用一个服务并基于响应(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 的责任,但其中一些方法可以与控制器交互)? (除了委托或通过处理程序创建类)。

【问题讨论】:

    标签: ios objective-c handler long-polling


    【解决方案1】:

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

    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];
    }
    

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      相关资源
      最近更新 更多