Какое соглашение используется для абстрагирования кода iPhone / iPad в Universal Binary? - PullRequest
0 голосов
/ 21 октября 2010

Итак, я сейчас работаю над универсальным двоичным файлом для приложения, которое будет работать на iPad и iPhone. Различия в основном только изменения пользовательского интерфейса.

Итак, имея в виду, у меня есть класс с именем ConfigurationController, который имеет тип UIViewController. Затем я подклассифицирую ConfigurationController в iPadConfigurationController и iPhoneConfigurationController.

Теперь, много кода является общим, поэтому я абстрагировал его до ConfigurationController. Тем не менее, есть несколько функций, в которых изменения приводят к различиям кода в 1 строку. Я в настоящее время спорю с другими разработчиками о том, что делать с этим кодом.

Кажется, есть два пути: 1: вставьте методы в суперкласс ConfigurationController, затем используйте макросы, чтобы определить, запущено ли приложение на iPad или iPhone. Затем вызовите код, который когда-либо должен вызываться на основе этого.

2: сохранить методы в подклассах (iPadConfigurationController и iPhoneConfigurationController) и сохранить изменения в 1 строку. В результате дублируется около 300 строк кода. Тем не менее, это оставляет путь в будущее, так как если изменения происходят сейчас, они могут измениться после дальнейшего развития. В этом случае у меня уже есть функции в подклассах.

Что могло бы быть более полезным и иметь меньше накладных расходов?

1 Ответ

1 голос
/ 21 октября 2010

Рефакторинг различий в 1 строку в небольшие вспомогательные функции, объявленные в базовом классе, но реализованные в производных классах (я скорее специалист по C ++, поэтому надеюсь, что терминология имеет смысл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...