разработка iPhone - шаблоны дизайна приложений - PullRequest
6 голосов
/ 24 мая 2010

Существует множество ресурсов, касающихся кодирования на iPhone. Большинство из них касается "как мне сделать X", например, msgstr "настроить контроллер навигации" или "загрузить текст с URL". Все хорошо и хорошо.

Сейчас меня больше интересуют вопросы, которые следуют за более простыми вещами - как лучше структурировать ваш сложный пользовательский интерфейс, или ваше приложение, или распространенные проблемы, которые возникают. Чтобы проиллюстрировать это: в книге, подобной «Начальная разработка iPhone 3», рассказывается, как настроить приложение с несколькими viewcontroller с верхним viewcontroller 'switcher', который переключается между представлениями, принадлежащими другим контроллерам представлений. Хорошо, но вы только сказали, как это сделать, и ничего о проблемах, которые могут последовать: например, если я использую их парадигму для переключения на UINavigationViewController, панель навигации окажется слишком низкой на экране, потому что UINavigationViewController ожидает быть самым верхним UIViewController (по-видимому). Кроме того, методы делегирования (например, относящиеся к изменениям ориентации) переходят к контроллеру вида верхнего переключателя, а не к фактическому контроллеру, отвечающему за текущий вид. У меня есть исправления для этих вещей, но они чувствуют себя как хаки, которые делают меня несчастным и заставляют меня чувствовать, что я что-то упускаю.

Одной из продуктивных вещей может быть просмотр некоторых проектов iPhone с открытым исходным кодом (см. этот вопрос ). Но кроме этого?

Обновление

Для пояснения: я полагаю, что то, о чем я спрашиваю, можно суммировать как «Рецепты и Gotchas для разработки iPhone». Такие вещи, которые представляют интерес для разработчиков, но не описаны ни в одной из книг по iPhone и т. Д., Которые я видел, например:

  • Я пишу приложение для iPad и хочу, чтобы UISplitViewController был представлен пользователю только в течение времени, что Apple, похоже, говорит, что я не могу этого сделать. Является ли это возможным? Как?

  • Apple не дает мне возможности стилизовать мое приложение удобным, универсальным способом (например, настройкой шрифтов или цветов). Как мне подойти к стилю моего приложения?

  • Управление памятью не облегчается некоторыми несоответствиями в именах методов UIViewController (например, viewDidUnload не противоположно viewDidLoad, несмотря на имя). Есть ли последовательный простой способ привести в порядок и сделать управление памятью контроллера представления менее подверженным ошибкам?

  • Как можно последовательно и легко проверить правильность поведения моих контроллеров представления при появлении предупреждения о памяти? В симуляторе легко смоделировать предупреждение о памяти, но если отображается пользовательский интерфейс, который я хочу протестировать (и является контроллером представления «конечного уровня»), его представление не будет выгружено, поскольку оно в настоящее время видно.

N.B. На самом деле я не задаю вышеупомянутые вопросы здесь - я думаю, что у меня есть достойные ответы на них! - просто приводить примеры «хороших» вопросов, иллюстрирующих этот вопрос о стекопереработке.

Ответы [ 4 ]

4 голосов
/ 02 марта 2011

Доклады WWDC, доступные в iTunes U (на http://developer.apple.com/videos/wwdc/2010/), содержат некоторую отличную информацию о структурировании, особенно в разделе Application Frameworkworks.

Если вы говорите о коде, используйте Model /Шаблон представления / контроллера, как в большинстве веб-приложений:

  • Код модели определяет объекты, которые представляет ваша программа. Например, приложение отслеживания времени может иметь объекты модели, такие как Task, TimeSlice и User (особенно в настройках сети).
  • Код представления предоставляется «бесплатно» с iOS SDK, если вам не требуется специальный код представления. Это UIImageView, UIButton и т. д.
  • Контроллеркод устраняет «разрыв» между моделью и представлением. Контроллер изменит представления, чтобы отразить выбранную пользователем модель, и облегчит выбор объектов модели.

Это базовый шаблон проектирования длялюбое приложение для iPhone, и это то, что большинство будет использовать.

Если, с другой стороны, вы ссылаетесь на то, что мы в моей компанииПри вызове UX (пользовательский интерфейс) дизайн, однако, вы не можете превзойти рекомендации Apple HIG в наборе документации Apple iOS SDK, доступном онлайн или в Xcode из меню Справка.

Другая вещь, которую я очень рекомендую, это поиграть с тестовым / фиктивным кодом.Ничто не может превзойти опыт.Экспериментируя с iOS SDK и пачкая руки, вы по-настоящему узнаете лучшие способы разработки приложений.

Редактировать:

Кроме того, методы делегирования (например, связанные с изменением ориентации)) перейдите к контроллеру вида верхнего переключателя, а не к фактическому контроллеру, отвечающему за текущий вид.

Вы можете уточнить?Во всех приложениях, которые я написал, показанный контроллер представления получает методы изменения ориентации.Обратите внимание, что есть два метода.shouldAutorotateToInterfaceOrientation: позволяет вам решить, должен ли вид вращаться, а didRotateFromInterfaceOrientation: позволяет изменить макет представления при необходимости.

1 голос
/ 23 февраля 2015

Пожалуйста, пройдите по этой ссылке. В этом они четко объяснили шаблоны проектирования.

http://www.raywenderlich.com/46988/ios-design-patterns

0 голосов
/ 21 марта 2011

Насколько я могу судить, нет книги или ресурса, которые бы касались того типа продвинутых ошибок и рецептов, которые я искал.Существует множество полезных ресурсов, но они не связаны с тем, о чем я думаю.

0 голосов
/ 27 февраля 2011

Возможно, вы захотите посмотреть видео, например, курс CS193p от Стэнфорда, на iTunes U. Они подробно рассматривают самые важные части разработки под iOS и дают некоторый исходный код.

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