1. Objective C / Говнокод #9147

    −79

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    // Досталось по наследству:
    
    @try {
        if([[items objectAtIndex:indexPath.row] performSelector:@selector(songsArray)]){
            NSArray *songsArray = [[items objectAtIndex:indexPath.row] songsArray];
            for(Song *song in songsArray){
                [song setIsSelected:button.selected];
            }
        }
     }
    @catch (NSException *exception) {
        NSLog(@"need fix in next time");
    }
    
    // переделал в
    if ( [[items objectAtIndex:indexPath.row] respondsToSelector:@selector(songsArray)] )
    {
        NSArray *songsArray = [[items objectAtIndex:indexPath.row] songsArray];
        for(Song *song in songsArray){
             [song setIsSelected:button.selected];
        }
    }

    Запостил: lime, 17 Января 2012

    Комментарии (5) RSS

    • Не понял
      Ответить
      • 265
        Ответить
        • все равно не понял. В чем суть примера?
          Ответить
          • Суть примера в очень замечательном exception. Мне показалось глупым проверять так наличие метода songsArray у item'a.
            Ответить
    • Т.е. по Вашему Вы нормально переделали? Ну хотя бы вот так сделали бы чтоли, чтобы была ясность:
      id fromSongArrayObj = [items objectAtIndex:indexPath.row];
      NSArray *songsArray = [fromSongArrayObj songsArray];
      for(Song *song in songsArray) {
      [song setIsSelected:button.selected];
      }
      }
      Если id не поддерживает метод songsArray, то переменная songsArray в данном случае будет nil и цикл просто не выполнится. Можно еще if повесить, чтобы прологировать данный момент. Вот это я бы назвал более-менее нормально переделанный код.
      Ответить

    Добавить комментарий