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

    −408

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    BOOL classDescendsFromClass(Class classA, Class classB)
    {
        while(classA)
        {
            if(classA == classB) return YES;
            classA = class_getSuperclass(classA);
        }
        
        return NO;
    }

    Why not just use isSubclassOfClass: ?

    Запостил: ivandjeferov, 02 Апреля 2014

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

    • а вдруг это подкласс подкласса?
      Ответить
    • А в Обж-С нет множественного наследования?
      Ответить
      • Для обьектов нет, есть только группы методов (точнее их сигнатур) именуемые протоколами - их можно до безконечности добавлять, но это чихня - атрибутов нет, реализаций в них нет, так что это просто для порядка.
        Ответить
        • > группы методов (точнее их сигнатур) именуемые протоколами
          Интерфейсы что-ли (в терминологии жабы)?
          Ответить
          • Да интерфейсами их называют, но тут есть коллизия - ключевое слово @interface обозначает обьявление нового класса, а для протоколов @protocol.
            Ответить
        • Для расширения функционала без наследования есть годная штука под названием «категория», их тоже можно добавлять по опупения. И там есть все, что можно делать при наследовании.
          Ответить
          • А ну добавь проперти или новое поле? А уж про "перегрузку" стандартных методов я молчу - сколько проблем создает.
            Ответить
    • cleaned
      Ответить

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