iOS: как разрабатывать для разных целей

У меня есть проект XCode с тремя разными целями (скажем, футбол, бейсбол, баскетбол), в результате чего появилось три разных приложения. Большая часть кода одинакова, но иногда она зависит от цели.

Каков наилучший способ реализации методов, специфичных для цели? Я хотел бы избежать

if ([AppDelegate isSoccerTarget] {
   ...
} else if () {
   ...
} else if () {
   ...
}

Я думал об использовании категорий, которые существуют только в одной из трех целей, но тогда я не могу использовать реализацию по умолчанию. И я хотел бы избежать наследования, так как некоторые классы уже находятся в иерархии классов, и я хотел бы сохранить это простым (избегайте person => player, manager, приводящий к soccerPlayer, BasketPlayer и т. Д.).

Как ты это делаешь?

2 ответа

Решение

То, как я это делаю, я помещаю все, что похоже в суперкласс, который добавляется ко всем целям, а затем я создаю новый класс (для вашего примера "Player"), который отличается для каждой цели.

Так что в исходном каталоге у меня были бы подкаталоги и файлы:

баскетбол /Player.m бейсбол /Player.m ...

А затем я бы выбрал "Целевое членство" для баскетбола /Player.m в качестве "Баскетбольного".

Таким образом, мне нужно создать экземпляр класса Player только один раз, и в зависимости от того, какая у меня цель, он автоматически создаст соответствующий класс. Надеюсь это поможет.

Вы должны сделать свои цели в панели проекта XCode (файл в самом верху), а затем, на одной из вкладок в каждой цели (я забыл, какая) добавить некоторые значения в макросах препроцессора (может быть макросами предкомпилятора), Затем в своем коде вы можете сделать это: скажем, ваш макрос препроцессора для цели для бейсбола назывался BASEBALL, а soccer - SOCCER. Ваш код будет выглядеть так:

...blablablaothercode...
#ifdef BASEBALL
      NSLog(@"Baseball!");
#endif
#ifdef SOCCER
      NSLog(@"Soccer!");
#endif
...blablablaothercode...

Их можно использовать везде, где можно использовать обычный код. Думайте об этом как о выражении "switch", которое компилятор может использовать, чтобы увидеть, какой код использовать для каждой цели.

Другие вопросы по тегам