Есть ли способ высушить мои контроллеры Objective-C iOS ViewControllers? - PullRequest
2 голосов
/ 06 марта 2012

У меня есть группа контроллеров, большинство из которых имеют схожие функции.

Например:

  • Контроллер A имеет метод 1 и метод 2.
  • Контроллер B имеет метод 2 и метод 3.
  • Контроллер C имеет метод 1 и метод 3.

Подклассификация на самом деле не вариант здесь, так как я специально не хочу, чтобы контроллер Bесть метод 1.

Протоколы на самом деле тоже не идеальны;Они по-прежнему требуют, чтобы я определял дубликаты моих методов в каждом контроллере.

Нет ли способа определить метод в одном месте и смешать эту функциональность с классами, как и когда это требуется в Objective C?

Ответы [ 2 ]

1 голос
/ 06 марта 2012
0 голосов
/ 06 марта 2012

Возможность не использовать класс вообще.Так как я предполагаю, что эти методы требуют доступа к некоторым полям ваших контроллеров, вы можете использовать функцию, которая получает в качестве параметра указатель на UIViewController и получает доступ к его полям изнутри функции.
Если каждый метод должен вести себя немного по-разному, в зависимости от того, работаете ли вы с ControllerA, ControllerB или ControllerC, тогда вы можете использовать метод isKindOfClass.Например:

    void method1(UIViewController* controller) {
        if( [(id) controller isKindOfClass:[ControllerA class]] ) {
             //do something
        }
    }
...