Руководство для разработчиков ios

Search code, repositories, users, issues, pull requests…

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

ios_razrabotka.jpg

Apple на протяжении многих лет является ведущей компанией в мобильном мире с его iPhone и IPad. Они держат большую часть рынка мобильных платформ, и это является причиной того, что большинство клиентов хотят, чтобы их приложения были представлены в App Store от Apple, а это побуждает разработчиков учиться создавать iPhone-приложения.

1.jpg

Разработка приложений для iPhone — это не так сложно, как вы думаете, и этот пост послужит вам полным руководством по всему процессу создания приложения для iPhone. Мы будем обсуждать причины, этапы, и инструменты для разработки приложений, и в конечном итоге вы получите легкий учебник для разработки базового приложения iPhone использованием Xcode 4.2.
Если вы хотите заработать денег, или у вас просто появилась интересная идея для приложения, которое может сделать вас миллионером, давайте начнем создание вашего первого приложения для iPhone.
Примечание: Вам понадобится компьютер с операционной системой Macintosh (Mac OS) для установки Xcode и разработки приложений, на Windows легально этого сделать нельзя.

Зачем разрабатывать для Apple?

Этот вопрос часто задают, поэтому стоит объяснить, почему вы должны быть заинтересованы в iPhone-разработках. Как было сказано в предисловии, iPhone в настоящее время занимает бOльшую часть рынка акций мобильных платформ. Этой причины должно быть достаточно для того, чтобы научиться разрабатывать приложения для iPhone, независимо от того, разрабатываете ли вы для себя или клиентов, ведь большинство людей надеются, что их приложения могут быть доступны во всём мире.

2.jpg

Apple любит простоту, и это относится и к их продукции, и к платформе. iOS представляет собой операционную систему, которая устанавливается на все мобильные устройства Apple. К ним относятся iPod Touch, iPhone и iPad. Так что имейте в виду, когда вы разрабатываете приложения для iPhone, вы могли бы создавать приложения для всех других устройств с IOS!
Кроме того, замечательно, какое количество усилий, прилагаемых для написания кода, может быть сохранено. При написании кода для iPhone-приложений, вы используете тот же язык программирования, что и всех остальных устройств от Apple. Это означает, что, когда вы разрабатываете приложение iPhone, приложение в дальнейшем может быть интегрировано в iPad и даже Mac.
Objective-C является основным языком программирования, включенным во все платформы. Наряду с Objective-C, вы также будете создавать iPhone приложение с помощью среды программирования Cocoa Touch.
Это всего лишь небольшое количество информации, чтобы вы смогли начать разработку приложений для iPhone. Разработка является весьма сложным процессом, но не спешите расстраиваться. Решение остается за вами.

Планирование структуры приложения

При стандартной идеологии создания iPhone-приложений вам придется пройти через несколько этапов. Первый этап включает в себя планирование и эскизы. Прежде всего, вам нужно иметь представление о том, что ваше приложение будет делать. Почему люди захотят его скачать? И какие функции вы хотите включить? Это самый важный этап, ведь если вы все сделаете правильно, вы сэкономите много времени и избежите неприятностей в стадии кодирования.

3.jpg

Рекомендуется набрасывать идеи для нескольких страниц (или экранов) вашего приложения. Просто нарисуйте прямоугольник, а может быть, 5 или 6, на листе бумаги, нарисуйте то, что вы хотите увидеть на каждой странице вашего приложения. Вы можете представлять экраны как разные страницы сайта. Каждый экран будет предлагать различные функции, такие как форма регистрации, список контактов или таблицу данных.

Ниже — краткий перечень различных элементов пользовательского меню:

  • Строка состояния (Status Bar) — отображает текущий уровень зарядки, 3G-связь, прием и многое другое. Рекомендуется всегда включать эти элементы.
  • Панель навигации (Navigation Bar) — Дает пользователям возможность перемещаться между страницами. Часто сюда включают кнопки на левой стороне меню, чтобы пользователь мог вернуться к предыдущей странице.
  • Панель инструментов (Toolbar) — появляется в нижней части iPhone приложений. Здесь будет несколько иконок, связанных с некоторыми функциями, такими как поделиться, загрузить, удалить и т.д.
  • Меню вкладок (Tab Bar) — Очень похоже на панель инструментов, только теперь вы работаете с вкладками. Когда пользователь щелкает по иконке вкладок, она будет автоматически выделена, и она будет подсвечиваться. Эта меню используется для переключения между окнами.

Этот список содержит только панели инструментов, которые вы можете найти в большинстве приложений. Есть и другие стили, которые вы можете найти в руководстве iOS UI Element Usage Guidelines. Настоятельно рекомендуется обратиться к этому руководству, если у вас есть какие-либо сомнения по интерфейсу iPhone.
В этой статье я не буду описывать каждый элемент пользовательского интерфейса. Слишком много элементов для рассмотрения, и вы не будете использовать все из них в одном приложении. Но вы можете черпать вдохновение из принципов, предложенных выше, и из других приложений iPhone, которые вам понравились.

Дизайн макета в Photoshop

Уверен, что большинство из вас достаточно хорошо разбирается в Adobe Photoshop. Это ведущее программное обеспечение для создания графики для сайта, баннеров, логотипов, и мобильных макетов. Разработка графики для сайта — довольно простой процесс, но все становится немного более сложным, когда речь заходит о дизайне iPhone приложений. Если вы хотите создать приложение, вы должны создать идеальный пиксельный дизайн макета с самого начала.

4.jpg

Для начала мы должны обсудить настройки в Photoshop. Так как мы разрабатываем для iPhone, нам необходимо рассмотреть два различных стиля дизайна. Стандартный дисплей iPhone составляет 320 х 480 пикселей. Однако iPhone 4 имеет новый дисплей «retina», который удваивает количество пикселей в пределах одного экрана. Таким образом, вы должны удвоить разрешение до 640 х 960 пикселей и создавать дизайн макетов и для этого стандарта.

Это означает, что вам также необходимо создать 2 набора иконок для ваших макетов. Первоначально иконки будут в 163 ppi, но вам нужно включить иконки с 326 ppi для iPhone 4. Иконки традиционно отмечаются @2x в конце названия их файлов, например «icon@2x.png» ( Немного больше об этом в статье iPhone 4 Retina Display: Techniques and Workflow ).
Теперь давайте оптимизировать наши новые настройки. Сначала мы должны отредактировать некоторые настройки, так что зайдите в Photoshop> Edit> Preferences> Guides, Grid and Slices. Мы установим линии сетки Gridline через каждые 20 пикселей с subdivisions на 2. При проектировании для дисплея iPhone 4, линии 2px будут означать 1 pts на экране. Вы должны это иметь в виду при масштабирования вашего приложения.

Как правило, легче создавать мои проекты с более высоким разрешением, а затем масштабировать их, но вы можете попробовать оба способа и посмотреть, что именно вам подходит лучше всего. Используйте настройки 640 х 960 пикселей при 326 ppi — лучше cохраните эти настройки, если вы предполагаете часто их использовать.

Использование шаблонных элементов

Теперь можно использовать Photoshop для создания идеального пиксельного макета, но это очень утомительная работа. Я рекомендую вам iPhone 4 GUI PSD от Teehan+Lax (см. Элементы интерфейса Mac, iPhone и iPad PSD).

5.jpg

Это огромный файл, в нем очень много элементов.

Совет: чтобы облегчить задачу, можно нажать V и активировать инструмент Move Tool, а затем выбрать в верхней панели Auto-Select, и выбрать Layer. С этими настройками вы можете нажать на любой элемент и Photoshop приведет вас к соответствующему слою.

Не бойтесь экспериментировать с макетом, вы даже можете создать прототип приложения с помощью макета. В зависимости от вашего приложения, вы можете включить множество функций, многие из которых вы сможете найти в этом файле PSD. Кроме того, можно перейти к слою этих элементов и отредактировать шрифт, градиент цвета, и другие стили дизайна. Главное — не изменяйте размер, так как все панели и элементы пользовательского интерфейса по умолчанию установлены стандартных размеров.

Разработка приложений в Xcode

Инструмент разработки для IOS и Mac OS X программирования называется Xcode. Если вы работаете в OS X Lion, вы можете найти Xcode и все соответствующие пакеты бесплатно в Mac App Store.

6.jpg

После завершения установки, запустите Xcode, и появится экран приветствия. Отсюда вы можете загрузить старый проект или создать новый. Сейчас вы должны нажать кнопку «Create a new Xcode project», и в новом окне вам будет предложено несколько вариантов. Выберите «Single View Application» и нажмите «Next». Вы можете назвать новое приложение, например, Test (желательно без пробелов), затем в поле «Company Identifier» введите любое слово, например, MyCompany, выберите папку и нажмите кнопку «Save».
Xcode создаст директорию и откроет новое окно для работы. Вы увидите список файлов, а папка, которая названа в честь вашего приложения, будет первой.

7.jpg

С новым Xcode 4,2 у нас есть два варианта дизайна элементов внешнего интерфейса. Классический xib/nib формат является стандартным для Mac OS X и приложений IOS, он требует от вас создавать каждый раз новый вид страницы.
Кроме того, вы увидите и файлы .h и.m. Это сокращенные имена файлов для заголовков и выполнения. Эти файлы находятся там, где вы пишете все Objective-C функции и переменные, необходимые для запуска вашего приложения.
Теперь нужно объяснить, как Xcode работает с MVC (Model, View, Controller), что является причиной того, что нам нужно 2 файла для каждого контроллера.

Программная иерархия MVC

Чтобы понять, как приложение работает, вам необходимо понять архитектуру его программирования. С Model, View, Controller (MVC) в качестве основы, Xcode может разделить все ваши дисплеи и коды интерфейса, исходя из вашей логики и функций обработки. На первый взгляд MVC может показаться запутанным, но это дело привычки.

8.jpg

Чтобы было легче понять, разберём каждый объект:

  • Модель (Model) — Вмещает все ваши логические и основные данные. Это: переменные, подключения к внешним RSS-каналам или изображения, подробные функции и числовую информацию. Этот слой полностью отделяется от вашего визуального оформления, так что вы можете легко изменить вид дисплея, и у вас все равно останутся те же данные.
  • Вид (View) — экран или стиль отображения вашего приложения. Список таблиц, профиль страницы, статьи, аудио-плеер, видео плеер — все эти примеры экранов. Вы можете изменить свой стиль и удалять элементы, но вы будете работать с теми же данными в вашей модели.
  • Контроллер (Controller) — выступает в качестве посредника между ними. Вы подключаете объекты вида в ViewController, который передает информацию модели. Так что пользователь может нажать на кнопку, и зарегистрироваться в вашей модели. Затем выполнить выход из системы, и через тот же контроллер передать сообщение «вы успешно вышли из системы!»

В основном ваша модель содержит всю информацию и функции, которые вам понадобятся для отображения на экране. Но модели не могут взаимодействовать с экраном, зато могут виды. Виды – это, в основном, все визуальные эффекты, и они могут только извлекать данные через ViewController. Контроллер на самом деле — это сложный способ передачи данных через интерфейс. Таким образом, вы можете обновлять дизайн, при этом не теряя какой-либо функциональности.
Обладая этими знаниями, вы не должны столкнуться с трудностями при попытке создать новое приложение. Как упоминалось ранее, Objective-C является основным языком программирования, который вы будете использовать для разработки приложений. Он построен на языке C, с обновленным синтаксисом и несколькими дополнительными парадигмами. Понадобится много времени, чтобы познакомиться с языком.

Дизайн вида с помощью iOS 5 Storyboards

Теперь, когда мы рассмотрели технические аспекты приложения, мы должны немного времени потратить на проектирование интерфейса. Я предполагаю, что вы выбрали «Storyboard» при создании проекта, что означает, что вы можете найти файл MainStoryboard_iPhone.storyboard в папке, расположенной на левой стороне окна. Нажмите на файл, чтобы выбрать его и открыть.

9.jpg

Новая боковая панель должна появиться непосредственно справа от папки. Это называется Document Outline, и это своего рода быстрый способ предварительного просмотра для проверки всех доступных видов в Storyboard.

10.jpg

Мы хотим начать с добавления нескольких элементов страницы. Нам нужны два разных элемента: панель навигации Navigation Bar и панели вкладок Tab Bar. Перед тем, как создать их, зайдите в Attributes Inspector (View > Utilities > Show Attributes Inspector) в правой стороне окна, а затем посмотрите на Status Bar. По умолчанию он установлен в положение Inferred, который использует стандартный для iPhone цвет статуса, но вы также можете выбрать черный (Black) или прозрачный черный (Translucent Black), если они лучше подходят для вашего приложения.

Библиотека объектов

Если панель утилит на правой стороне окна не видна, ее можно включить, зайдя в View > Utilities > Show Utilities. На панели утилиты (Utilities) посмотрите на нижнюю панель под названием Object Library. Там есть выпадающее меню с пунктом «Objects» в начале списка. Если вы не смогли их найти, вы можете зайти в View > Utilities > Show Object Library.

11.jpg

Из выпадающего меню Object Library, найдите и выберите Windows & Bars. Теперь нажмите на Navigation Bar (панель навигации), перетащите ее в окно просмотра и поместите непосредственно под черной cтрокой состояния Status Bar (это которая с индикатором аккумулятора). Мы можем настроить название и описание панели. Дважды щелкните на текст, где написано «Title», и вы увидите ярлык «Title» на панели утилит, где вы можете изменить название описание, например «Тест». Нажмите «Enter», посмотрите, что получится.

12.jpg

Опять в панели Windows & Bars прокрутите вниз, чтобы найти панели вкладок Tab Bar, а затем перетащите ее в окно просмотра и поместите ее в самом низу вашего приложения. По умолчанию эти два элемента выглядят отлично.

13.jpg

Теперь, может быть, вы хотите, чтобы градиент панели навигации сочетался с панелью вкладок в нижней части, и для этого вы можете нажать на панель навигации и посмотреть справа на панель Attributes в панели Utilities. Самая первая опция называется Style, который установлен по умолчанию. Измените стиль c дефолтного на Black Opaque, и ваши цвета будут сочетаться.

14.jpg

Давайте также добавим еще одну кнопку вкладок в нижней строке приложения. Наведите курсор мыши на панели Windows & Bars, и прокрутите вниз до Tab Bar Item, прямо под панелью вкладок. Перетащите его в ваше приложение, и поместите между 2 существующими кнопками на панель вкладок. Если вы дважды щелкните на эту кнопку, вы можете увидеть некоторые дополнительные опции в панели Utilities, здесь вы можете изменить изображение элемента и название. Например, в нашем примере название изменено на «Bookmark» для только что добавленного элемента панели вкладок.

Вы прочли краткое руководство по дизайну в Xcode. Это не очень сложный процесс, но вам потребуется немного времени, чтобы привыкнуть к интерфейсу. Попробуйте добавить несколько других элементов, чтобы почувствовать себя более уверенно, а также вы можете посетить Apple’s iOS Development Resources для получения более подробной, ведь это никогда не помешает!

Не забудьте про Часть 2

На этом мы завершаем первую часть руководства по дизайну приложений для iPhone. В следующей части мы расскажем об Objective-C и Cocoa Touch, и вы научитесь создавать работающие приложения для iPhone, так что следите за новостями! UPD часть 2

Примеры дизайна для IOS

Дабы вдохновить вас к новым свершениям, прилагаю подборку отличного дизайна для iPhone- приложений.
Race Splitter

15.jpg

Satisfaction Remote

16.jpg

Tweetbot for iPhone

17.jpg

Reeder

18.jpg

Foursquare

19.jpg

MailChimp

20.jpg

Instagram

21.jpg

Joystiq

22.jpg

Piictu

23.jpg

Darkness

24.jpg

via

С разрешения автора выкладываю перевод статьи Norberto Gil Vasconcelos «14 must knows for an iOS developer» (ссылка на оригинал). На момент публикации статьи актуальной была версия Swift 3.

Как iOS-разработчик (в данный момент абсолютно зависимый от Swift), я создавал приложения с нуля, поддерживал приложения, работал в различных командах. За все время работы в этой индустрии я не раз слышал фразу: «Не можешь объяснить – значит не понимаешь». Так что, в попытке понять, чем именно я занимаюсь каждый день, я создаю список того, что, на мой взгляд, важно для любого iOS-разработчика. Я постараюсь максимально ясно объяснить каждый момент. [Пожалуйста, не стесняйтесь исправлять меня, высказывать свое мнение или предлагать свои дополнения в этот список.]


Темы: [ контроль версий | архитектурные паттерны | Objective-C против Swift | React | менеджер зависимостей | хранение информации | CollectionViews & TableViews | UI | протоколы | замыкания | схемы | тесты | геолокация | локализуемые строки ]


Вот мой список, без лишних слов, в произвольном порядке.

1 – Контроль версий

Поздравляю, вы приняты! Извлеките код из репозитория и приступайте к работе. Стоп, что?

Контроль версий необходим любому проекту, даже если вы только разработчик. Наиболее часто используемые системы – это Git и SVN.

SVN основан на централизованной системе управления версиями. Это репозиторий, где создаются рабочие копии, и для доступа к ним нужно соединение по сети. Авторизация изменений осуществляется по конкретному пути; система отслеживает изменения путем регистрации каждого файла, полную историю изменений можно посмотреть только в репозитории. Рабочие копии содержат лишь новейшую версию.

Git использует распределенную систему управления версиями. У вас будет локальный репозиторий, в котором вы сможете работать, сетевое подключение необходимо только для синхронизации. При изменении рабочей копии сохраняется состояние всего каталога, но регистрируются только внесенные изменения; и репозиторий, и рабочие копии имеют полную историю изменений.

2 – Архитектурные паттерны

Ваши пальцы дрожат от волнения, вы разобрались с контролем версий! Или это из-за кофе? Неважно! Вы в ударе, и настал час программирования! Не-а. А чего еще ждать?
Прежде, чем вы сядете за клавиатуру, необходимо выбрать архитектурный паттерн, которого вы будете придерживаться. Если не вы начали проект, вы должны соответствовать уже существующему паттерну.
Существует широкий спектр паттернов, используемых при разработке мобильных приложений (MVC, MVP, MVVM, VIPER и т. д.). Дам краткий обзор наиболее часто используемых в разработке для iOS:

  • MVC — сокращенно от Model, View, Controller. Controller создает мост между Model и View, которые не знают друг о друге. Связь между View и Controller очень тесная, поэтому Controller обрабатывает практически все. Что это значит? Проще говоря, если вы создаете сложный View, ваш контроллер (ViewController) будет безумно большим. Есть способы обойти это, однако они выходят за рамки MVC. Еще одним недостатком MVC является тестирование. Если вы используете тесты (так держать!), вы, вероятно, будете тестировать только Model, поскольку она является единственным слоем, отделенным от остальных. Плюс использования шаблона MVC в том, что он интуитивно понятен, и большинство разработчиков iOS привыкли к нему.


    MVC – визуальное представление

  • MVVM — сокращенно от Model, View, ViewModel. Привязки (в основном реактивное программирование) устанавливаются между View и ViewModel, это позволяет ViewModel вызывать изменения в модели, которая затем обновляет ViewModel, автоматически обновляя View из-за привязок. ViewModel ничего не знает о View, что облегчает тестирование, а привязки уменьшают объем кода.


    MVVM – визуальное представление

Для более глубокого понимания и получения информации о других паттернах я рекомендую прочесть следующую статью.

Может показаться, что это не так уж и важно, но хорошо структурированный и организованный код может предотвратить много головной боли. Большая ошибка, которую каждый разработчик совершает в какой-то момент, состоит в том, чтобы просто получить желаемый результат и отказаться от организации кода, ошибочно полагая, что он экономит время. Если вы не согласны, послушайте старину Бенджи:

Каждая минута, потраченная на организацию своей деятельности, экономит вам целый час

– Бенджамин Франклин

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

3 – Objective-C против Swift

Решая, на каком языке программирования писать свое приложение, вы должны знать, какими возможностями располагает каждый из них. Если есть возможность, я предпочитаю использовать Swift. Почему? Если честно, Objective-C имеет очень мало преимуществ по сравнению со Swift. Большинство примеров и учебных пособий написаны на Objective-C, а у Swift с каждым обновлением вносятся коррективы в парадигмы, что может приводить в уныние. Однако эти проблемы в конечном итоге исчезнут.

В сравнении с Objective-C, Swift делает скачок во многих отношениях. Его легко читать, он похож на естественный английский, и, поскольку он не построен на C, это позволяет отказаться от традиционных условностей. Для тех, кто знает Objective-C, это значит никаких больше точек с запятой, а вызовы методов и условия выражений не нужно будет заключать в скобки. Также легче поддерживать ваш код: Swift нужен только файл .swift вместо файлов .h и .m, потому что Xcode и компилятор LLVM могут определять зависимости и выполнять инкрементные сборки автоматически. В целом вам придется меньше беспокоиться о создании стандартизированного кода, и вы обнаружите, что можно достичь тех же результатов меньшим количеством строк.

Все еще сомневаетесь? Swift безопаснее, быстрее, и заботится об управлении памятью (большей ее частью!). Знаете, что происходит в Objective-C, когда вы вызываете метод с неинициализированной переменной-указателем? Ничего. Выражение становится неактивным и пропускается. Звучит здорово, потому что это не приводит к вылету приложения, однако вызывает ряд багов и нестабильное поведение, из-за которых вам захочется подумать о смене профессии. Серьезно. Идея стать профессиональным выгульщиком собак заиграла новыми красками. В это же время, счетчик Swift работает с optional-значениями. Вы не только получите лучшее представление о том, что может быть nil и поставите условия для предотвращения использования nil-значений, но и получите runtime crash, если nil optional все же будет использоваться, что упростит отладку. ARC (автоматический подсчет ссылок) помогает лучше распоряжаться памятью в Swift. В Objective-C ARC не работает с процедурным C или с API, наподобие Core Graphics.

4 – React или не React? (вот в чем вопрос)

Функциональное реактивное программирование (FRP) – новый хит. Оно предназначено для упрощения составления асинхронных операций и потоков событий/данных. Для Swift это общая абстракция вычислений, выраженная через интерфейс Observable.

Проще всего проиллюстрировать это небольшим количеством кода. Скажем, малыш Тимми и его сестра Дженни хотят купить новую игровую приставку. Тимми получает от своих родителей 5 евро каждую неделю, то же самое касается Дженни. Однако Дженни зарабатывает еще 5 евро, доставляя газеты по выходным. Если оба экономят каждый цент, мы можем каждую неделю проверять, доступна ли консоль! Каждый раз, когда значение их сбережений меняется, рассчитывается их совокупная величина. Если этого достаточно, сообщение сохраняется в переменной isConsoleAttainable. В любой момент мы можем проверить сообщение, подписавшись на него.

// Сбережения
let timmySavings = Variable(5)
let jennySavings = Variable(10)

var isConsoleAttainable =
Observable
.combineLatest(timmy.asObservable(), jenny.asObservable()) { $0 + $1 }
.filter { $0 >= 300 }
.map { "\($0) достаточно для покупки приставки!" }

// Вторая неделя
timmySavings.value = 10
jennySavings.value = 20
isConsoleAttainable
   .subscribe(onNext: { print($0) }) // Не выведет ничего

// Двадцатая неделя
timmySavings.value = 100
jennySavings.value = 200
isConsoleAttainable
   .subscribe(onNext: { print($0) }) // 300 достаточно для покупки приставки!

Это лишь пример того, что можно сделать с FRP, как только вы освоите его, оно откроет целый новый мир возможностей, вплоть до принятия архитектуры, отличной от MVC… Да-да! MVVM!
Вы можете посмотреть на двух основных претендентов на звание главного Swift FRP:

  • RxSwift
  • ReactiveCocoa

5 – Менеджер зависимостей

CocoaPods и Carthage являются наиболее распространенными менеджерами зависимостей для проектов Cocoa Swift и Objective-C. Они упрощают процесс внедрения библиотеки и поддержания ее в актуальном состоянии.

CocoaPods имеет множество библиотек, собран с помощью Ruby и может быть установлен с помощью следующей команды:

$ sudo gem install cocoapods

После установки вы захотите создать Podfile для вашего проекта. Вы можете запустить следующую команду:

$ pod install

или создать пользовательский Podfile с такой структурой:

platform :ios, '8.0'
use_frameworks!

target 'MyApp' do
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
pod 'SwiftyJSON', '~> 2.3'
end

После создания пришло время установить ваши новые модули:

$ pod install

Теперь вы можете открыть .xcworkspace вашего проекта, не забудьте импортировать ваши зависимости.

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

Для получения дополнительной информации об установке и использовании загляните на GitHub проекта.

6 – Хранение информации

Начнем с простейшего способа сохранения данных для ваших приложений. NSUserDefaults, названный так, потому что он обычно используется для сохранения пользовательских данных по умолчанию, отображаемых при первой загрузке приложения. По этой причине он сделан простым и легким в использовании, однако это же подразумевает некоторые ограничения. Одним из них является тип объектов, которые принимает этот способ. Его поведение очень похоже на Property List (Plist), который имеет такое же ограничение. Вот шесть типов объектов, которые они могут хранить:

  • NSData
  • NSDate
  • NSNumber
  • NSDictionary
  • NSString
  • NSArray

В целях совместимости со Swift, NSNumber может принять следующие типы:

  • UInt
  • Int
  • Float
  • Double
  • Bool

Объекты могут быть сохранены в NSUserDefaults следующим образом (Сначала создайте константу, которая будет хранить ключ для сохраняемого объекта):

let keyConstant = "objectKey"

let defaults = NSUserDefaults.standardsUserDefaults()
defaults.setObject("Object to save", objectKey: keyConstant)

Чтобы прочитать объект из NSUserDefaults, мы можем сделать следующее:

if let name = defaults.stringForKey(keyConstant) {
   print(name)
}

Есть несколько удобных методов для чтения и записи в NSUserDefaults, которые получают конкретные объекты вместо AnyObject.

Keychain представляет собой систему управления паролями и может содержать пароли, сертификаты, личные ключи или личные заметки. Keychain имеет два уровня шифрования устройства. Первый уровень использует код блокировки экрана блокировки в качестве ключа шифрования. Второй уровень использует ключ, сгенерированный и сохраненный на устройстве.

Что это значит? Это не совсем супер безопасно, особенно если вы не используете пароль на экране блокировки. Существуют также способы доступа к ключу, используемому на втором уровне, поскольку он сохранен на устройстве.

Лучшее решение — использовать собственное шифрование. (Не храните ключ на устройстве)

CoreData – это фреймворк, разработанный Apple, чтобы ваше приложение взаимодействовало с базой данных объектно-ориентированным образом. Это упрощает процесс, сокращая объем кода и избавляя от необходимости тестировать этот раздел.

Вы должны использовать CoreData, если вашему приложению требуются постоянные данные, это значительно упрощает процесс их сохранения и позволяет вам не создавать/тестировать свой собственный способ связи с БД.

7 – CollectionViews & TableViews

Почти каждое приложение имеет одну или несколько CollectionViews и/или TableViews. Знание того, как они работают и когда использовать ту или иную, предотвратит сложные изменения в вашем приложении в будущем.

TableViews отображают список элементов в одном столбце по вертикали и ограничены только вертикальной прокруткой. Каждый элемент представлен UITableViewCell, который можно полностью настроить. Их можно отсортировать по разделам и строкам.

CollectionViews также отображают список элементов, однако они могут иметь несколько столбцов и строк (к примеру, сетка). Они могут прокручиваться по горизонтали и/или по вертикали, и каждый элемент представлен UICollectionViewCell. Как и UITableViewCells, они могут быть настроены по желанию и отсортированы по разделам и строкам.

Они обе имеют схожую функциональность и используют многоразовые ячейки для улучшения подвижности. Выбор того, что вам нужно, зависит от сложности, которую вы хотите иметь в списке. CollectionView может использоваться для представления любого списка и, на мой взгляд, всегда является лучшим выбором. Представьте, что вы хотите представить список контактов. Список простой, можно реализовать его одним столбцом, поэтому вы выбираете UITableView. Все работает! Через несколько месяцев ваш дизайнер решит, что контакты должны отображаться в формате сетки, а не в виде списка. Единственный способ сделать это — изменить реализацию UITableView на реализацию UICollectionView. Я пытаюсь сказать, что, хотя ваш список может быть простым и UITableView может быть достаточно, если есть большая вероятность изменения дизайна, вероятно, лучше всего реализовать этот список с помощью UICollectionView.

Какой бы выбор вы ни сделали, хорошей идеей будет создать общий TableView/CollectionView. Это облегчает реализацию и позволяет повторно использовать большой объем кода.

8 – Storyboards VS Xibs VS программируемый UI

Каждый из этих методов может использоваться отдельно для создания пользовательского интерфейса, однако ничто не мешает вам объединить их.

Storyboards предоставляют более широкое представление о проекте, которое придется по вкусу дизайнерам, позволяя видеть поток приложения, а также его окна. Недостатком является то, что с добавлением большего количества окон соединения становятся более запутанными, а время загрузки Storyboard увеличивается. Проблемы слияния возникают гораздо чаще, потому что весь пользовательский интерфейс находится в одном файле. Их также становится гораздо сложнее решить.

Xibs обеспечивают визуальный просмотр окон или частей окна. Преимущества заключаются в простоте повторного использования, меньшем количестве конфликтов слияния, чем в Storyboards, и в простоте просмотра содержимого каждого из окон.

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

Вышеуказанные подходы к созданию пользовательского интерфейса сильно разнятся. Но, по моему субъективному мнению, лучшим вариантом является сочетание всех трех. Несколько Storyboards (теперь мы можем переходить между Storyboard-ами!), с Xibs для любого визуального объекта, который не является основным окном, и, наконец, чуть-чуть программирования для дополнительного контроля, столь необходимого в определенных ситуациях.

9 – Протоколы!

В быту протоколы существуют, чтобы в определенной ситуации мы знали, как реагировать. Допустим, вы пожарный, и возникла чрезвычайная ситуация. Каждый пожарный должен следовать протоколу, который устанавливает требования для успешного реагирования. То же самое относится и к протоколам в Swift/Objective-C.

Протокол определяет эскиз методов, свойств и других требований для заданных функций. Он может быть принят классом, структурой или перечислением, которые затем будут иметь фактическую реализацию этих требований.

Вот пример создания и использования протокола:

Для моего примера мне понадобится перечисление, в котором приведены различные типы материалов, используемые для тушения пожара.

enum ExtinguisherType: String {

   case water, foam, sand

}

Далее я создам протокол реагирования на чрезвычайные ситуации.

protocol RespondEmergencyProtocol {

   func putOutFire(with material: ExtinguisherType)

}

Теперь я создам класс пожарного, который подчиняется протоколу.

class Fireman: RespondEmergencyProtocol {

    func putOutFire(with material: ExtinguisherType) {

       print("Fire was put out using \(material.rawValue).")

    }

}

Отлично! А теперь используем нашего пожарного.

var fireman: Fireman = Fireman()

fireman.putOutFire(with: .foam)

В результате должно получится следующее: “Fire was put out using foam.”

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

protocol FireStationDelegate: AnyObject {

func handleEmergency()

}

Пожарная служба делегирует пожарному меры по ликвидации чрезвычайной ситуации.

class FireStation {
   weak var delegate: FireStationDelegate?

   func emergencyCallReceived() {
      delegate?.handleEmergency()
   }
}

Это означает, что пожарный должен будет также соответствовать протоколу FireStationDelegate.

class Fireman: RespondEmergencyProtocol, FireStationDelegate {

   func putOutFire(with material: ExtinguisherType) {
      print("Fire was put out using \(material.rawValue).")
   }

   func handleEmergency() {
      putOutFire(with: .water)
   }

}

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

let firestation: FireStation = FireStation()
firestation.delegate = fireman
firestation.emergencyCallReceived()

В результате получим: “Fire was put out using water.”

10 – Замыкания

Речь пойдет только о замыканиях Swift. В основном они используются для возврата завершающего блока или с функциями высокого порядка. Завершающие блоки используются, как понятно из названия, для выполнения блока кода после завершения задачи.

Замыкания в Swift аналогичны блокам в C и Objective-C.

Замыкания являются объектами первого класса*, поэтому их можно вкладывать и передавать (как и блоки в Objective-C).

В Swift функции – это частный случай замыканий.

Источник – fuckingswiftblocksyntax.com **

Этот ресурс – отличное место для изучения синтаксиса замыканий.

* Объекты первого класса (first-class objects) – объекты, которые можно использовать без ограничений: присвоить переменной, передать/вернуть из функции, создать/уничтожить во время выполнения программы и т.д. Подробнее. (здесь и далее – прим. переводчика)
** Сайт не работает, но остались снимки в waybackmachine, пример.

11 – Схемы

Если коротко, то схемы – это любой простой способ переключения между конфигурациями. Начнем с базовой информации. Рабочая область содержит различные связанные проекты. Проект может иметь различные таргеты — таргеты определяют продукт для сборки и способ сборки. Также, проект может иметь различные конфигурации. Схема в Xcode определяет коллекцию таргетов для сборки, конфигурацию, используемую при сборке, и коллекцию тестов для выполнения.

Фиолетовым показана одна из возможных схем

12 – Тесты

Если вы выделяете время на тестирование своего приложения, вы на верном пути. Это, конечно, не панацея, вы не можете исправить каждый баг, равно как и гарантировать, что ваше приложение будет лишено каких-либо проблем; и все же я думаю, что плюсы перевешивают минусы.

Начнем с минусов модульного тестирования:

  • Увеличение длительности разработки;
  • Увеличение количества кода.

Плюсы:

  • Необходимость создавать модульный код (для упрощения тестирования);
  • Очевидно, обнаружение большинства ошибок до релиза;
  • Упрощение поддержки.

В сочетании с утилитой Инструменты у вас будет все, чтобы приложение было гибким и работало без ошибок и сбоев.

Существует много инструментов, которые можно использовать для проверки работы приложения. В зависимости от того, что нужно отследить, вы можете выбрать один или несколько из них. Пожалуй, наиболее часто используемые инструменты – это Leaks, Time Profiler и Allocations.

13 — Геолокация

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

Существует фреймворк под названием Core Location, позволяющий получить доступ ко всему, что вам нужно:

Фреймворк Core Location позволяет определить текущее местоположение или направление движения устройства. Фреймворк использует доступное аппаратное обеспечение для определения положения и направления пользователя. Вы можете использовать классы и протоколы этого фреймворка для настройки и планирования событий, связанных с местоположением и направлением. Вы также можете использовать Core Location для отслеживания перемещения по географическим регионам. В iOS вы также можете определить расстояние до Bluetooth-маячка*.

* Как я понял, речь о технологии iBeacon

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

14 – Локализуемые строки

То, что должно быть реализовано в любом приложении. Это позволяет менять язык в зависимости от региона, в котором находится устройство. Даже если ваше приложение только на одном языке, в будущем может возникнуть необходимость добавить новые. Если весь текст вводится с использованием локализуемых строк, все, что нужно сделать, это добавить переведенную версию файла Localizable.strings для нового языка.

Ресурс может быть добавлен в язык через инспектор файлов. Чтобы получить строку с NSLocalizedString, необходимо написать следующее:

NSLocalizedString(key:, comment:)

К сожалению, чтобы добавить новую строку в файл Localizable, это нужно сделать вручную. Вот пример структуры:

{
"APP_NAME" = "MyApp"
"LOGIN_LBL" = "Login"
...
}

Теперь другой язык (португальский), локализуемый файл:

{
"APP_NAME" = "MinhaApp"
"LOGIN_LBL" = "Entrar"
...
}

Есть даже способы реализации множественного числа.

Всегда делись тем, чему ты научился.

– магистр Йода

Надеюсь, эта статья была полезна!

Развитие языка Swift снизило и так невысокий порог вхождения в iOS-разработку. Изучать сам язык, среду разработки и практики написания кода на нём — одно удовольствие. Но это не значит, что писать для платформ Apple просто или непрестижно: iOS-разработчики востребованы в большинстве крупных компаний. Ссылки на статьи и другие материалы в этом списке подобрал Артур Антонов — разработчик в команде приложения Яндекс.Переводчик.

Советы будут полезны будущим стажёрам Яндекса, а также всем остальным, кто хочет создавать приложения в режиме полного цикла, знать инструменты и основные фреймворки, придумывать архитектуру сервисов, писать производительный код без багов и угадывать мысли цензоров App Store. Если вы уже уверены в своих силах и готовы применять знания на практике, то вы можете податься на летнюю стажировку для iOS-разработчиков.

Инструменты платформы

Если вы только начинаете знакомиться с SDK, набором библиотек для iOS или хотите систематизировать знания в области создания приложений — пройдитесь по этим ссылкам.

Документация Apple, конечно же

Когда в марте 2008 года Apple представила первый SDK (тогда ещё для iPhone OS), больше ста тысяч человек загрузили его за первые две недели после релиза. Но тогда мало кто подозревал, какой бум iOS ждёт нас впереди. Сейчас Apple предлагает очень много полезной информации: ссылки на API, статьи, код. Лучше сначала ознакомиться с содержанием, а потом возвращаться в документацию по необходимости. 

Статьи про отдельные библиотеки iOS

Полезнее документации, инструкций и учебников может быть только советы опытных разработчиков. Авторы журнала NSHipster — именно такие ребята. Стоит отметить очень удобную навигацию по темам и классные рекомендации книг. 

Рассылка про iOS-разработку

Если вы мобильный разработчик или только собираетесь им стать, то вы наверняка уже слышали рекомендации подписаться на ряд email-рассылок. Вот всего одна, зато исчерпывающая и с очень чёткой структурой. Её ведёт независимый iOS-разработчик Дэйв Вервер. Внутри — новости индустрии за неделю, ссылки на полезные тулзы, GitHub и многое другое.

На кого стоит подписаться в твиттере

Твиттер — источник остросоциальных тем, новых мемов и идей для iOS-разработки. По ссылке вы найдёте список из 52 сильнейших специалистов индустрии: подписывайтесь, чтобы первыми узнавать важные новости, участвовать в обсуждениях и просто быть в теме.

Интерфейс

Фреймворк UIKit позволяет строить интерфейсы iOS-приложений и обрабатывать действия пользователя. В прошлом году Apple представила SwiftUI, который однажды должен заменить UIKit — но переходный период будет долгим, и ещё в течение нескольких лет большинству разработчиков потребуется знать оба фреймворка.

Документация по UIKit

Официальная документация от Apple очень подробная и становится со временем всё лучше: её точно будет полезно изучить новичкам, но даже при наличии опыта получится найти что-то интересное. Она покрывает большинство тем — от структуры приложения и методов пользовательского ввода до защиты данных и взаимодействия с самой iOS. Обратите внимание на раздел про UIView и его наследников.

Видеокурс по созданию приложения с UIKit

Если вам пока сложно разобраться с UIKit самостоятельно, обратите внимание на этот англоязычный видеокурс. Он создан для абсолютных новичков: опыт в создании iOS-приложений или знание Swift не понадобятся. Первые уроки в игровой форме рассказывают про основные понятия и термины. Все видео короткие — самые длинные идут около 9 минут — и бесплатные.

Туториалы по созданию интерфейса

Статьи про UI в. iOS-приложениях. Тут и про добавление разных элементов (например, контекстного меню или навигации), и про начало работы с анимацией, и про SnapKit для iOS. Основная ценность статей заключается в том, что это полноценные инструкции: со всеми подробностями и комментариями для новичков. Тексты, конечно, тоже на английском языке.

Туториалы по SwiftUI

UIKit — это прошлое и настоящее, а SwiftUI (по крайней мере, по замыслу Apple) — будущее. Apple предлагает начать создавать красивые, динамичные и быстрые приложения с новым декларативным фреймворком. Авторы собрали целый учебник: множество туториалов с разделением на секции и шаги. Каждый шаг проиллюстрирован скриншотом страницы или кода — словом, точно не запутаетесь. В конце каждого туториала можно пройти короткий тест, который проверит, насколько хорошо вы разобрались в теме.

Архитектура

Самый ответственный этап в создании приложения — выбор архитектуры и принципов, по которым вы планируете вести разработку. Чем позже вы найдёте ошибку, допущенную при проектировании, тем сложнее будет её исправить. Изучите материалы по этим ссылкам, чтобы сразу выбрать правильную концепцию приложения.

Примеры SOLID

Существует много разных подходов к проектированию архитектур. Но все они так или иначе опираются на принципы SOLID. iOS-разработчик Сергей Крапивенский в своём докладе доходчиво рассказывает, как эти фундаментальные правила могут применяться в стандартных задачах разработки. Самая полезная часть доклада — разбор распространенных ошибок и способов, которые помогут их избежать или оперативно устранить.

GoF-паттерны с примерами

На этом сайте собрана исчерпывающая информация о паттернах проектирования. Автор предлагает начать с основ: изучить историю создания, задуматься о пользе, почитать критику и узнать всё о классификации. Самое ценное здесь — это сам каталог паттернов.

Clean Architecture

Статья на Хабре, которая призвана донести до сообщества детали концепции Clean Architecture и популярные заблуждения, связанные с ней.

Обзор архитектурных паттернов в iOS

iOS-разработчик из Badoo сравнивает популярные архитектурные практики и рассказывает о своих выводах. Всего автор разбирает четыре архитектурных паттерна: MVC, MVP, MVVM и VIPER. Впечатления от каждого из них в формате «ожидание/реальность» от практикующего разработчика — полезное чтение для новичков в этой теме.

Список опенсорсных iOS-приложений

Действительно огромный список опенсорсных приложений для iOS, watchOS и tvOS. Они распределены по категориям, и к каждому приложению есть небольшое описание Посмотрите, как устроены приложения, или примите участие в развитии любого из проектов на GitHub.

Многопоточность

Концепция многопоточного программирования отлично укладывается в общую идеологию iOS. Запускать процессы в отдельных потоках можно с помощью понятного набора инструментов, который только улучшился с развитием языка Swift. Эта часть списка посвящена Grand Central Dispatch — технологии Apple для управления параллельными операциями. Можно почитать и о некоторых других опциях — знания в области многопоточности пригодятся и на собеседовании, и в продакшене.

Введение в многопоточность iOS

Туториал по улучшению отзывчивости приложений при помощи GCD. Это первая часть большого учебника, которая поможет разобраться, как использовать GCD, а также познакомит с основными функциями, плюсами и минусами API. В рамках туториала авторы предлагают не просто почитать теорию, но и попробовать применить её на практике. Для этого вместе с учебными материалами вы получите почти готовый проект под названием GooglyPuff. Сможете оптимизировать его с помощью GCD — и миссия выполнена!

Архивный гайд от Apple

Несмотря на то, что это руководство за 2012 год, мы советуем не обходить его стороной. Возможно, будет полезно даже начать с него, если вы впервые знакомитесь с темой многопоточности. Внутри вас ждёт подробное описание главных процессов: вы познакомитесь с основами асинхронного проектирования приложений, узнаете про выполнение задач с помощью объектов Objective-C и асинхронную обработку системных событий. Бонус — словарь с основными терминами.

objc.io про многопоточность

objc.io — проект трёх разработчиков из Берлина: Криса Эйдхофома, Даниэля Эггерта и Флориана Куглера. В далёком 2013 году они создали этот сайт, чтобы обсуждать темы, актуальные для всех разработчиков iOS и macOS. Прошло много времени, ребята выпустили целых пять книг и написали множество материалов — самостоятельно и с крутыми экспертами. По ссылке — выпуск на тему многопоточности. Вместе с автором библиотеки PSPDFKit Питером Штейнбергером и опытным разаботчиком Тобиасом Кранцером они рассказывают об основных методах, проблемах и подводных камнях параллельного программирования.

Отладка

Отладка здесь — это не только поиск багов. Инструментарий iOS-разработчика позволяет вам делать структуру кода более прозрачной и видеть больше свойств приложения прямо во время программирования.

Cессия WWDC

Видео доклада с WWDC 2018 — это целый час ценнейшей информации про методы отладки Xcode. Вы узнаете, как использовать популярный дебаггер LLDB и брейкпоинты для исправления ошибок в вашем приложении и что нужно сделать, чтобы получить максимум от инструментов отладки Xcode. Всё это с примерами и подробными объяснениями.

Выпуск objc.io про отладку

Целый урок про отладку приложений от objc.io. Начинается он с разбора кейса — автор рассказывает о процессе и инструментах, которые он использовал для отслеживания ошибки регрессии в UIKit. После этого полезного чтения вас ждут не менее интересные размышления про LLDB и технологии DTrace и Activity Tracing.

Отладка приложений под iOS

Роман Ермолов руководит группой разработки приложения Яндекс для iOS. В этом докладе от 2015 года он говорит про интересные возможности LLDB, отладку иерархии UIView и отладку без исходников. Бонус — реальные примеры и дискуссия по теме в конце доклада.

Как работает LLDB

Во всех вышеперечисленных источниках много внимания уделяется именно этому отладчику. Хотите разобраться во всех нюансах его работы? Тогда вам точно пригодится этот доклад с WWDC 2019. Вы узнаете про разные способы отображения значений, форматирование пользовательских типов данных и (самое интересное!) расширение LLDB с помощью собственных сценариев Python 3.

Устройство Objective-C Runtime

Майк Эш — программист и пилот планера, который живет в Вашингтоне. Впечатляет? Это вы ещё не видели его блог! В нём он делится полезным софтом, делает остроумные посты в формате Q&A по пятницам и рассказывает о полётах. В этом старом (2009 год), но всё ещё полезном материале он рассуждает об Objective-C Runtime. Максимально подробное объяснение поможет разобраться в теме даже новичкам.

Оптимизация

Недостаточно просто придумать приложение, написать код и опубликовать результат в App Store. Нужно, чтобы оно хорошо работало: запуск не занимал много времени, реакция на ввод данных была мгновенной, а батарея не разряжалась из-за большого количества сетевых запросов.

Обзорная статья Apple

В своей обзорной статье Apple советует, как применять цикл непрерывного улучшения для оптимизации работы приложений. Помимо верхнеуровневых сведений и советов, в материале есть ссылки на полезные инструменты.

Вводная сессия WWDC об инструментах

Если вы хотите больше узнать про инструментарий Xcode, посмотрите видео с WWDC-2019. Это получасовой рассказ с примерами, который поможет разобраться с такими вещами, как шаблоны для профилирования производительности приложений и поиск «узких» мест в коде. Все описанные спикером инструменты призваны существенно повысить скорость отклика вашего приложения.

Сессия WWDC о подходах к оптимизации

Ещё одно видео с конференции Apple, но уже за 2018 год. Оно позволит глобально взглянуть на тему оптимизации: спикеры говорят об общем подходе и стратегиях, которых стоит придерживаться. Однако тут тоже не обошлось без практических советов, основанных на опыте авторов: они приложили руку к нескольким популярным приложениям от самой Apple. В видео рассказывается о том, как научиться пользоваться пакетом Instruments и другими возможностями Xcode.

Книга о внутреннем устройстве iOS и macOS

Продолжаем погружаться в тему — нужно ещё больше теории. По ссылке вы найдёте почти 800 страниц авторства Джонатана Левина с информацией практически обо всём, что когда-либо интересовало вас в работе с iOS. Чтобы разобраться в принципах работы системы, автор активно пользуется реверс-инжинирингом (обратной разработкой) и учит читателей делать то же самое. Вас ждёт большое количеством практических примеров, иллюстраций, скриншотов и ссылок на открытый исходный код от Apple.

Доклад об оптимизации запуска приложения

Вернёмся к практике. В этом видео руководитель службы мобильной разработки Яндекс. Карт Николай Лихогруд рассказывает об оптимизации времени запуска iOS-приложения Карт. На примере реального кейса вы узнаете, как правильно измерять время запуска, оптимизировать системную и пользовательскую части и поддерживать результат в следующих версиях.

Публикация в App Store

Многие разработчики, включая сотрудников Яндекса, недооценивали сложность процесса подписи iOS-приложения и модерации в App Store. Казалось бы, у вас всё готово: программа работает, вы хотите начать распространять её среди клиентов. Но у Apple есть правила, которым ваш код должен соответствовать.

Как загрузить приложение в App Store

Начните с пошаговой инструкции. Она выгодно отличается от публикаций на других ресурсах своей актуальностью: это популярный гайд от разработчиков Густаво Амброзио и Тони Дабура, обновлённый в 2020 году — с информацией из последней версии Xcode.

Подробный разбор подписи приложения

Ещё одна классная статья на сайте objc.io. Автор считает, что механизм подписи и подготовки кода — одна из самых сложных вещей, с которыми сталкивается iOS-разработчик. Поэтому он подробно описывает процесс: почитайте, чтобы понимать, что и зачем вы делаете. Но учитывайте, что статья написана в далёком 2014 году.

Обзор инструментов Xcode для подписи приложения

Для тех, кто хочет совсем углубиться в тему и разобраться: презентация Apple про функции Xcode, которые упрощают процессы управления сертификатами, подпись приложений и настройку параметров сборки проекта. Это видео с конференции WWDC 2016. Именно тогда компания представила обновлённый способ управления конфигурацией подписи с включенным по умолчанию автоматическим режимом.

Непрерывная интеграция

Пара дополнительных ссылок для тех, кто уже программирует под iOS и теперь беспокоится, как соотнести и объединить свой труд с результатами коллег по команде.

Введение

Начните разрабатывать iOS приложения сегодня.

Создание и разработка iOS приложений — весёлое и стоящее занятие, но если вы новичок в разработке, то наверняка у вас есть вопросы, с чего же начать. Этот гид станет отличной отправной точкой в разработке приложений для iOS. С помощью своего Mac’а вы можете создать iOS приложения для iPad, iPhone и iPod touch. Следуя этой инструкции вы узнаете о том, где взять необходимые для работы инструменты, узнаете основные концепции и лучшие способы реализации, а также найдете ссылки на дополнительные ресурсы.

На протяжение изучения инструкции вы будете использовать Xcode и iOS SDK – инструменты разработчиков от Apple. Вы познакомитесь с основами программирования на Objective-C, основным языком всех iOS приложений и фреймворков, и фреймворками Cocoa Touch. Вы создадите свое собственное несложное iOS приложение и научитесь тестировать его на устройствах. В самом конце мы расскажем о том, как разместить приложение в App Store.

Каждая страница этой инструкции посвящена новой теме и содержит ссылки на статьи по соответствующей теме. Это руководство охватывает только начальные знания, на последней странице вы найдете раздел, включающий в себя ссылки на документы с информацией по теме. После знакомства с этой инструкцией, своего рода картой, вы сможете углубиться в изучение любой конкретной темы. В ваших руках будут все инструменты, знания и навыки для создания приложений под iOS!

Устанавливаем инструменты

При разработке приложений вы используете набор iOS-разработчика, так называемый SDK, а также Xcode – интегрированную среду разработки Apple (IDE). Xcode предоставляет всё необходимое для разработки замечательных iPhone, iPad и iPod Touch приложений. Среди инструментов есть редактор кода, графический редактор пользовательского интерфейса и многие другие примочки, от настраиваемых сборок до управления репозиториями кода.

Xcode использует единственное окно рабочего пространства — workplace window, которое содержит большую часть необходимых вам данных. С Xcode вы легко переходите от написания кода к его отладке, разработке пользовательского интерфейса, и все это в пределах одного рабочего окна. SDK iOS постоянно расширяет комплект инструментов Xcode, добавляя компиляторы и фреймворки, необходимые вам для работы с iOS.

Чтобы начать, вам потребуется:

1. Скачать последнюю версию Xcode.

Откройте приложение App Store на вашем Mac, используйте поиск, чтобы найти Xcode и кликните кнопку Free, чтобы скачать Xcode. Загружая Xcode, вы загружаете и SDK iOS. (App Store установлен на Mac OS X версии 10.7 и позже. Если у вас установлена ранняя версия Mac OS X, то нужно будет ее обновить.)

2. Зарегистрироваться как разработчик Apple в Программе Разработчиков iOS.

Для того, чтобы создавать и тестировать приложения в Simulator, регистрироваться необязательно. Однако, вам будет необходимо зарегистрироваться, чтобы тестировать приложения на iOS устройствах и распространять их. Регистрация предоставляет вам полный доступ к Центру Разработчика iOS и Порталу Настройки iOS. Если вы зарегистрируетесь сейчас, то сможете следовать всем пунктам данного руководства, включая тестирование приложения на устройстве.

С места — в карьер!

Чтобы создать крупное iOS приложение, вам нужно знать множество вещей, но с инструментами и SDK iOS создавать и запускать приложения довольно просто. Руководство «Ваше первое iOS приложение» знакомит вас с инструментами, основными шаблонами и с самим процессом разработки приложений. С помощью этого руководства вы создадите простое приложение, в котором пользователь сможет ввести текст, и он отобразится на экране устройства. Также вы научитесь запускать приложение в Simulator на вашем Mac. Простые пошаговые объяснения, приведенные в этом руководстве, дают упорядоченные полезные понятия, которые вы в дальнейшем будете использовать при разработке приложений.

«Ваше первое iOS приложение» — самая длинная статья в этом руководстве, но не спешите! Именно эта информация закладывает основу понятиям, о которых позже вы узнаете больше. Каждая следующая статья подробно останавливается на одном из этих понятий.

Теперь ознакомьтесь со следующей статьей:

«Ваше первое iOS приложение», где рассказывается, как создать простое приложение в среде iOS разработки.

После того, как вы ознакомитесь с документом, вернитесь на эту страницу и продолжите изучение по этому руководству.

Инструменты

Xcode предоставляет все инструменты для управления всеми этапами разработки — от создания приложения до его тестирования, оптимизации и отправке вашего приложения в App Store. В руководстве «Ваше первое iOS приложение» вы узнали как создать новый проект, добавлять элементы пользовательского интерфейса и редактировать исходный код. После того, как вы создадите приложение, используйте Xcode, чтобы протестировать и отладить код, проанализировать и улучшить работу приложения, выполнить необходимые операции управления исходным кодом, заархивировать и отправить свое приложение в App Store.

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

Теперь ознакомьтесь со следующей статьей:

«Управление потоком операций в Xcode», она покажет вам дополнительные функции Xcode для разработки iOS приложений.

Язык

Objective-C — объектно-ориентированный язык для разработки всех iOS приложений. Язык Objective-C является надмножеством языка C, т.е. в своих проектах вы можете писать код как на C, так и на Objective-C. Несмотря на то, что для разработки вы можете использовать другие языки, вы не сможете создать iOS приложение без использования Objective-C.

Objective-C — простой язык с синтаксисом и соглашениями, понятными для изучения, особенно если у Вас есть опыт работы с другими объектно-ориентированными языками как Java или C ++. Если вы C-программист, то вы отметите, что приложения намного легче проектировать и изменять, когда вы знакомы с объектно-ориентированным программированием и Objective-C.

Теперь ознакомьтесь со следующей статьей:

«Пишем код на Objective-C», она научит вас основам синтаксиса Objective-C и расскажет про объявление класса, методы, передачу сообщений и объявленные свойства.

Основные Задачи

Как художник должен знать, как использовать кисть, а музыкант знать гаммы и аккорды, так и программист должен знать, как выполнять некоторые основные задачи в коде.

Чтобы создать iOS приложение, вы должны знать как создавать объекты, сравнивать их, запрашивать информацию о них и получать доступ к объектам в массивах. Подобные задачи весьма распространены в iOS приложениях. После того, как вы получите эти навыки, вы сможете работать над более сложным кодом Objective C.

Теперь ознакомьтесь со следующей статьей:

«Основные навыки программирования», она описывает основные задачи в программировании на Objective C.

Фреймворки

Приложение состоит из кода, который пишете вы, и фреймворков, предоставляемых Apple. Во фреймворке находится библиотека методов, которые ваше приложение может вызывать. Доступ к библиотеке фреймворка могут иметь несколько приложений одновременно.

Любое разрабатываемое вами приложение обращается к различным фреймворкам. Вы можете настроить использование фреймворка через программный интерфейс приложения — API. Прописанный в заголовочных файлах API определяет доступные объекты, классы, структуры данных и протоколы. Apple создает фреймворки, которые уже содержат функции, которые вы, возможно, захотите реализовать. Использование фреймворков экономит время и усилия, а также дает гарантию того, что ваш код будет эффективным и безопасным. Системные фреймворки — единственный способ получить доступ к аппаратной части устройства.

Теперь ознакомьтесь со следующими статьями:

«Обзор основных фреймворков» — описывает фреймворки, используемые в разработке приложений.

«Интеграция кода и фреймворков» — описывает виды методов, используемых во фреймворках Objective C и объясняет, как интегрировать код приложения с кодом фреймворка.

Шаблоны проекта

Шаблон проекта решает проблему разработки стандартного программного обеспечения. Шаблоны — это абстрактные проекты, они не являются кодом. Когда вы используете шаблон проекта, вы адаптируете этот шаблон в соответствии со своими определенными потребностями.

Независимо от того, какое приложение вы создаете, вам необходимо знать базовые проекты, используемые во фреймворках. Понимание этих проектов поможет эффективнее использовать фреймворки и писать программы, которые будет легче изменять, расширять или же использовать повторно.

Теперь ознакомьтесь со следующей статьей:

«Оптимизация приложения с шаблонами проектов» — описывает ключевые шаблоны и объясняет их использование в разработке приложений.

Проектирование интерфейса пользователя

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

Несмотря на то, что многие ничего не знают о принципах проектирования пользовательских интерфейсов, все равно можно понять, когда приложение удовлетворяет требованиям, а когда нет. Чтобы создать превосходный интерфейс пользователя, следуйте принципам и соглашениям, описанным в «Руководстве по пользовательским интерфейсам iOS».

Теперь ознакомьтесь со следующей статьей:

«Разработка с мыслями о пользователе», она объясняет как создавать приложения для лучшего восприятия пользователем. В этом документе описаны только принципы, которых необходимо придерживаться при программировании, без реализации в коде.

Проект приложения

Прежде, чем вы начнете писать строки кода, нужно принять несколько критических проектных решений. Максимально возможно определите цели и функции своего приложения. Выберите вид модели данных, которую будет использовать приложение. Определитесь со стилем пользовательского интерфейса, к примеру, будет ли использоваться иерархия видов или же это будет служебное приложение. Будет ли оно универсальным, то есть, будет ли оно работать на iPad, iPhone и iPod touch? Такие проектные решения помогут вам создать архитектуру приложения.

Но прежде, чем работать над архитектурой приложения, ознакомьтесь с фреймворками Cocoa Touch. Ведь ваше приложение существует не само по себе, оно зависит от создаваемых с помощью фреймворков объектов. Изучите объекты фреймворков, которые реализуют базовую структуру приложения и которые служат стандартными блоками.

Теперь ознакомьтесь со следующими статьями:

«Проектируйте приложения с заботой» — перечень основных вопросов по проектированию, которые вы должны задать сами себе. Так вы сможете выяснить, как воплотить ваши проектные решения в жизнь.

«Главные объекты вашего приложения», она описывает главные объекты фреймворка, которые являются частью всех iOS приложений, а также принципы их совместной работы.

App Store

Всё, что вы читали выше, было посвящено созданию приложений в Xcode. Однако, есть и другие моменты, о которых вам нужно знать, чтобы опубликовать приложение в App Store.

Для создания действительно хорошего приложения вам надо протестировать его не только в Simulator, но и непосредственно на устройствах, для которых вы его разрабатывали. Чтобы запускать приложения на iOS устройствах, вам потребуется зарегистрировать эти устройства, создать сертификаты доступа для разработчиков и создать ID приложения, чтобы идентифицировать его среди остальных.

После того, как приложение будет протестировано и усовершенствовано, вам необходимо утвердить его через iTunes Connect. Ваше приложение должно быть одобрено рецензентами App Store прежде, чем оно будет опубликовано.

Теперь ознакомьтесь со следующей статьей:

«Подготовка к отправке в App Store», она описывает административные аспекты разработки приложений для App Store.

Поиск информации

При разработке приложений вам будет нужен быстрый и легкий доступ к подробной технической информации. С Xcode эта информация будет у вас всегда под рукой пока вы пишите код.

Быстрая справка XCode выводит на экран краткую справочную информацию, позволяя вам не отрываться от работы над файлом. Кликните по символу, объекту интерфейса или настройке сборки проекта, чтобы получить больше информации. Для того, чтобы получить справку о выполнении общих операций поводите курсором по рабочей области Xcode. Каждая статья справки предлагает пошаговые инструкции и видео или иллюстрацию с дальнейшими разъяснениями.

Оrganizer документов в Xcode содержит различные руководства по программированию, обучающие материалы, иллюстрированные примеры кода, руководства пользователя по инструментам разработчика и ссылки на ссылки подробную информацию о API фреймворках, — все эти материалы можно найти в Библиотеке разработчика iOS. В Organizer вы найдете встроенную документацию разработчика Apple, доступную для поиска и просмотра. Кроме того, с Библиотекой разработчика iOS можно ознакомиться и в сети.

Теперь ознакомьтесь со следующей статьей:

«Быстрый поиск документации» — узнайте как быстро и эффективно использовать важнейшие ресурсы документации.

Что делать теперь?

Поздравляем! Вы ознакомились со всеми пунктами «Начните разрабатывать iOS приложения сегодня» и прочли все рекомендуемые обзоры и другие документы. Теперь вы можете разрабатывать приложения для iOS самостоятельно. А еще вы можете скачать демо-проект приложения из Библиотеки разработчика iOS, чтобы увидеть как это все вместе выглядит. Однако, чтобы стать эффективным и производительным разработчиком iOS, вам необходимо зарегистрироваться в Программе разработчика iOS и углубить знания и навыки, которые вы только что получили.

Прочтите эти руководства по изучению разработки iOS приложений

Проработайте эти материалы, чтобы набраться опыта в других областях разработки приложений:

«Первая заявка в App Store» — узнайте о критериях и процессе отправки приложения на рассмотрение в App Store.

«Второе приложение для iOS» — узнайте как использовать Storyboard для разработки приложений.

«Третье приложение для iOS» — узнайте как интегрировать iCloud в основанное на документе приложение.

Прочтите эти статьи, чтобы расширить знания о разработке iOS приложений

Следующие документы обязательны к ознакомлению всеми разработчиками приложений для iOS:«Краткий обзор технологий iOS» — описывает фреймворки и другие технологии, доступные вашему iOS приложению.

«Руководство по разработке интерфейса пользователя для iOS» — учит, как сделать так, чтобы ваше приложение соответствовало соглашениям пользовательского интерфейса для iOS.

«Разработка для App Store» — описывает весь процесс разработки приложений, настройки устройств для тестирования и отправки приложения в App Store.

«Язык программирования Objective C» — знакомит с объектно-ориентированным программированием и описывает основной язык программирования, используемый для разработки приложений.

«Концепции программирования на Objective C» — содержит описания шаблонов разработки, архитектуры и других важных понятий разработки приложений.

«Руководство по программированию iOS приложений» — объясняет обязательные для разработки iOS приложений понятия.

«App Store Review Guidelines» — перечень требований, которым должны соответствовать все приложения, отправляемые в App Store.

Понравилась статья? Поделить с друзьями:
  • Должностная инструкция для инженера пто в строительстве
  • Руководство ростехнадзора по владимирской области
  • Тойота ипсум инструкция по эксплуатации скачать бесплатно
  • Руководство республики корея
  • Инструкция по эксплуатации ваз 2115 инжектор 8 клапанов скачать бесплатно