Все статьи На чём пишут приложения под iOS, фотография 1

На чём пишут приложения под iOS

26 февраля 2019
Разработчикам
iOS

Ты уже пишешь приложения под iOS? Тогда тебе должны быть известны различные варианты разработки. А если в твоей голове только появилась мысль о разработке под iOS, то за ней должны последовать следующие вопросы:

  • какой язык нужно изучать?
  • где брать материалы для изучения?
  • нужен ли Mac?
  • нужно ли iOS-устройство?
  • какой редактор подойдет для написания кода?

Статья даст ответы на эти вопросы и поможет достичь поставленной цели.

Операционная система iOS была выпущена компанией Apple в 2007 году. Она не ограничивается iPhone и iPad, но я расскажу о разработке приложений только для этих устройств. Статья разделена на несколько частей:

  1. Разработка нативных приложений.
  2. Языки программирования для создания iOS-приложений.
  3. Среда разработки.
  4. Разработка приложений и игр с дополненной реальностью при помощи фреймворка ARKit.
  5. Разработка игр при помощи фреймворка SpriteKit.

Кроме нативной разработки существует ещё и кроссплатформенная, когда приложение пишется сразу для iOS и Android на языке, отличном от нативного. Об этом мы поговорим в другой раз, но можете утолить любопытство уже сейчас и прочитать статью главного редактора Apptractor Леонида Боголюбова, написанной для Лайв Тайпинг.

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

Процесс разработки нативного приложения — это написание программы на одном из основных языков для платформы iOS: Objective-C или Swift. Этот путь создан корпорацией Apple и предполагает следование всем её идеям. Apple обеспечивает разработчиков последними версиями SDK (software development kit — набор средств разработки), документацией, а также средой разработки Xcode.

Преимущества нативной разработки:

  • приложение оптимизировано под платфому iOS, а значит, будет работать быстро и корректно;
  • приложение реагирует на нажатия мгновенно, отсутствуют задержки в анимации и при скроллинге контента;
  • понятный и простой доступ к аппаратной части устройств — камере, микрофону, акселерометру, геолокации, адресной книге, плееру и т. д. На этих и других возможностях устройства можно базировать функциональность приложения;
  • родной для платформы интерфейс. Нативные приложения обычно оперируют «платформенными» элементами интерфейса: меню, навигация, формы и все остальные элементы дизайна берутся от операционной системы и потому привычны и понятны пользователю;
  • с каждым обновлением iOS синтаксис языка Objective-C практически не меняется, поэтому поддержка приложения происходит практически безболезненно — изменить или переписать придётся лишь незначительное количество кода.

Недостатки:

  • поддержка приложения на языке Swift. Регулярные обновления версий платформы iOS вынуждают обновлять код, но с приходом пятой версии Swift компания Apple обещает облегчить этот процесс;
  • большинство текущих проектов написаны на языке Objective-C. С каждым годом всё труднее найти программиста, желающего писать на нём, а переписывать проекты на Swift многие компании отказываются, так как это огромный и невероятно трудоёмкий процесс.

На каком языке пишут приложения для iOS

Разработчики из компании Apple предоставили два варианта:

  • Objective-C. Ветеран с большой историей, постепенно отходящий на второй план;
  • Swift. Очень молодой и быстро набирающий популярность среди разработчиков.

Оба языка относятся к объектно-ориентированному программированию (ООП) и успешно выполняют его основные парадигмы: наследование, полиморфизм, инкапсуляцию и абстракцию. Простыми словами, ООП — это стиль написания кода, который позволяет разработчику группировать схожие задачи в классы. Код соответствует принципу DRY (don’t repeat yourself — не повторяй самого себя) и становится лёгким для сопровождения.

Objective-C

Язык программирования, созданный в начале 1980-х годов прошлого века путём скрещивания С (Си) с популярным в то время Smalltalk (связь с объектами через сообщения). Objective-C изначально воспринимался, как простая надстройка над языком C, модифицирующая его некоторые синтаксические конструкции, но после того, как за лицензирование взялась сначала компания Next Step, а потом на правах преемника и Apple, Objective-C стал одним из наиболее популярных языков для разработки приложений. Поэтому многие типы данных в Objective-C унаследовали префикс NS (Next Step). Это основной язык, используемый компанией Apple, знание которого позволяет писать под любые платформы Apple, в том числе macOS.

Плюсы:

  • высокая степень поддерживаемости кода: с каждым обновлением изменения в Objective-C минимальны;
  • большое количество документации, технической литературы и огромное сообщество. Apple предоставляет и регулярно обновляет официальные книги и ресурсы. Какие именно знания нужны iOS разработчику, ты можешь узнать из нашей статьи;
  • быстрый переход с одного из языков семейства C. Objective-C — это расширение языка С. Это означает, что любой код на С является также корректным кодом и для Objective-C, нужно только привыкнуть к синтаксису;
  • совместимость Objective-C внутри проектов, написанных на Swift, позволит тебе применять два языка одновременно.

Минусы:

  • если ты никогда не сталкивался с программированием и решил сразу начать с Objective-C, то могут возникнуть сложности понимания принципов ООП и нагромождённого синтаксиса. Трудности исчезнут по ходу обучения;
  • низкая читаемость кода: в начале изучения синтаксис покажется сложным;
  • динамическая система типов данных, которая также является плюсом, предполагает возможность появления или пропуска ошибок даже во время компиляции. В частности, затянуть процесс могут опечатки;
  • низкая по сравнению с языком Swift производительность;
  • взаимодействие с файлами Swift происходит при помощи «моста» (условный адаптер, который переводит код на Swift в формат Objective-C), что сильно тормозит процесс сборки.

Примеры приложений, разработанных нашей командой на языке Objective-C:

  • ИЛЬ ДЕ БОТЭ — интернет-магазин парфюмерии и косметики;
  • Мой доктор — приложение для молодых родителей и беременных женщин, которым нужна консультация врача в любое время суток;
  • Vogue Collections — интернет-магазин одежды.

Swift


Молодой, мощный и открытый язык программирования общего назначения. Официально представлен компанией Apple 2 июня 2014 года. Сочетает в себе все лучшее от C и Objective-C, но лишен ограничений последнего, накладываемых в угоду совместимости с C. В Swift используются строгая типизация объектов, уменьшающая количество ошибок ещё на этапе написания кода. Также в Swift добавлены современные функции, такие как дженерики, замыкания, множественные возвращаемые значения и многое другое, превращающие создание приложения в более гибкий и увлекательный процесс. Основой нового языка программирования послужили существующие компилятор, отладчик и фреймворки.

Swift покажется знакомым Objective-C-разработчикам. Он сочетает в себе читабельность именованных параметров и мощь динамической объектной модели Objective-C.

Плюсы:

  • скорость. Сейчас язык почти на одном уровне с C++, и в Купертино обещают, что это не предел;
  • упрощённая навигация по файлам проекта. В отличие от Objective-C, который создаёт два файла для объявления и реализации, Swift обходится всего одним. Кроме того, имена методов и комментарии между файлами синхронизируются автоматически;
  • лёгкая читаемость, поскольку данный язык не построен на C. Например, не нужно ставить точку с запятой в конце строки и писать скобки для окружения выражения внутри if/else. Никаких квадратных скобок, Swift напоминает обычный английский язык, является гораздо более чистым и имеет упрощённый синтаксис;
  • лаконичность. Количество кода со Swift становится гораздо меньше. К примеру, для добавления двух строк можно воспользоваться оператором «+«;
  • большие возможности по сравнению с Objective-C. Например, дженерики (универсальные шаблоны). Универсальный код позволит тебе писать гибкие, общего назначения, функции и типы, которые могут работать с любыми другими типами. Ты можешь написать код, который не повторяется и выражает свой контент в абстрактной форме;
  • полное взаимодействие с кодом, написанным на Objective-C, позволит тебе применять два языка одновременно;
  • повышенная безопасность. Swift, в отличие от Objective-C, строго типизирован, то есть при объявлении именованных параметров нужно явно указывать тип данных, иначе при исполнении кода компилятор вызывает ошибку. Это облегчит процесс устранения багов, поскольку ты можешь решить проблему сразу;
  • поддержка динамических библиотек. Одно из значимых изменений в Swift — переход от статических библиотек к динамическим, которые по сути являются исполняемыми кусками кода. Они присоединяются к приложению и «связываются» с новыми версиями языка, что позволяет программе работать стабильно.

Минусы:

  • Swift постоянно развивается и меняется. Например, вызов метода может измениться после обновления. Благо Apple выстроили этот процесс таким образом, что код написанный на более ранних версиях не будет сломан. Ты только увидишь предупреждение о том, что твой код написан на старой версии, и редактор предложит переход на более новую и поможет выполнить этот процесс построчно;
  • взаимодействие с файлами Objective-C происходит при помощи «моста», который сильно тормозит процесс сборки.

Большая часть проектов нашей компании написана на языке Swift. Вот некоторые примеры:

  • Sephora — приложение магазина парфюмерии и косметики;
  • Киноголик — сервис для покупки абонементов в кино;
  • LIME — приложение магазина одежды;
  • Kaspersky Security Pulse — приложение со статьями об информационной безопасности.

C++ (Си плюс)


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

С++ поддерживается iOS, но есть одно «но»: всё приложение целиком на нём написать не удастся. С++ подойдёт для решения логических задач или целых модулей приложения, а также для написания сложных алгоритмов, но пользовательский интерфейс должен быть написан на Objective-C или Swift.

Один из вариантов такого взаимодействия — это использование диалекта Objective-C++, некое объединение Objective-C и C++. Зачем их смешивать? Например, самая хорошая библиотека для текущей задачи была написана на С++, иногда решение проблемы можно было более лаконично сделать на С++ или необходимо вызывать функции Objective-C из проекта С++. Распространённый пример — портирование игры или движка под платформы Apple.

Наконец, можно использовать С++ для улучшения производительности. Гибкость сообщений Objective-C накладывает некоторые издержки по сравнению с реализацией большей части виртуальных функций С++. Объекты Objective-C не имеют эквивалентных быстрых виртуальных функций С++. Для оптимизации это может быть важным фактором.

Какой язык выбрать?

Objective-C постепенно уступает дорогу молодому Swift, который Apple всячески популяризирует. В прошлом 2018 году в рейтинге Tiobe Objective-C занимал более низкую позицию по отношению к Swift. Исходя из этой статистики и вышеперечисленных плюсов языка Swift, я бы рекомендовал именно его.

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

Что касается языка C++, то его знание — это полезный навык, но только как опция, поэтому решать тебе.

Где брать материалы для изучения?

Материалы по языку Swift:

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

Если нужны учебники на русском языке, то предлагаю:

Личная рекомендация — бесплатный видеокурс по Swift от Алексея Скутаренко Swift Марафон, а также группа Вконтакте iOS Development Course. В группе ты можешь посмотреть домашние задания по каждому уроку или получить ответ на свой вопрос.

Материалы по языку Objective-C

Книг от Apple, к сожалению, нет, но есть отличные платные издания:

Личная рекомендация — бесплатный видеокурс по Objective-C от Алексея Скутаренко iOS Development Course.

Стоит отметить, что помимо рекомендованных мной видеокурсов, большое количество как платных, так и бесплатных обучающих материалов по Swift и Objective-C есть на Youtube и специальных обучающих порталах, таких как Udemy и SwiftBook.

Материалы по языку C++

Источники актуальной информации

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

  • raywenderlich.com. Неисчерпаемый источник бесплатных руководств. Подходит и новичкам, и профессионалам, которым нужно быстро понять работу нового фреймворка;
  • NSHipster. Блог дизайнера и разработчика облачного сервиса Heroku, который он ведёт уже не в одиночку. Фреймворки, объекты фреймворков, Objective-C, Swift, Xcode, важны open source-проекты — здесь есть полезные статьи про всё;
  • Natasha The Robot. Отличный блог iOS-разработчицы Наташи Мурашев. Обязателен всем, кто разбирается со Swift и не только;
  • Блог iOS-разработчика студии Plausible Labs Майка Эша. То, о чём здесь говорится, требуются знания чуть глубже базовых;
  • Little Bites of Cocoa. Блог со всякими полезными руководствами. Новички и опытные разработчики полюбят его за лаконичность постов и широту освещаемых вопросов;
  • iOS Dev Weekly. Cрез новостей из мира iOS-разработки. Приходит в виде почтовой рассылки по пятницам. Куратор — Дэйв Вервер;
  • Github известной компании Rambler&Co. Содержит множество интересного из Open source. Также их внутренний спейс и блог;
  • Блог про разработку под iOS на «Хабрахабре»;
  • Cайт iosgoodreads.ru и канал в Telegram от Rambler. Самые интересные статьи, видео и новости, связанные с iOS-разработкой.

Среда разработки iOS приложений

Самыми популярные среды разработки, или IDE (Integrated Development Environmetn) — это Xcode от Apple и AppCode от JetBrains.

Xcode


Быстрый редактор, укомплектованный полным набором инструментов для разработки под iOS, macOS и др. Скачивается из App Store бесплатно.

Плюсы:

  • IB (Interface Builder). IB — это приложение с набором инструментов для разработки графических интерфейсов, интегрированное в Xcode. Процесс работы напоминает создание дизайна «на холсте». Всю вёрстку можно сделать в IB, а затем связать визуальные элементы с файлом реализации, в котором описана вся логика взаимодействия с ними.

Плюсом Interface Builder является наглядная вёрстка, настраивание стилей, бэкграунда, шрифтов и т. д., а минусом будет, например, работа с анимацией, её можно выполнить только кодом.

  • симулятор. Предоставляет полный набор iOS-устройств, на которых можно запустить и протестировать своё приложение;
  • отладчик. Умеет разбирать визуальную часть поэлементно для поиска ошибок в вёрстке, также поможет отловить баг и разобраться с проблемой утечки памяти. В добавок ко всему отладчик может производить все эти операции и UI-тесты в «беспроводном» режиме;
  • встроенная система контроля версий в GitHub. Помимо стандартных функций ветвления, в режиме разделённого экрана позволяет просматривать изменения в различных «ветках»;
  • функция имитации геолокации. Незаменима при работе с картой. Имеет «зашитый» набор городов, список которых можно дополнить;
  • содержит Swift Playground, так называемую «песочницу», которая позволяет быстро проверить новый алгоритм или графическую рутину (например, несколько строчек кода), не создавая целое приложение;
  • может собирать приложение сразу на iOS-устройство;
  • поддержка «тёмной темы» macOS.

Минусы:

  • нестабилен. В процессе работы может самопроизвольно закрываться с ошибкой. Проект никак не пострадает, и последние изменения кода не пропадут. Просто перезапусти Xcode и продолжай работать с того момента, на котором остановился;
  • зачастую не работает автодополнение (функция дополнения текста по введённой части).

AppCode


Как и Xcode, содержит полный набор необходимых средств для эффективной и удобной работы с языком Objective-C, Swift, C++ и на 100% совместима с Xcode.

Плюсы:

  • стабилен. Внезапных закрытий, как в Xcode, нет;
  • автодополнение не отваливается и работает быстрее, чем в Xcode;
  • интеграция с баг/issue-трекерами, такими как JIRA, YouTrack, Lighthouse, Pivotal Tracker, GitHub, Redmine и т. д.;
  • более подробное описание ошибок и предупреждений;
  • может собирать приложение сразу на iOS-устройство, как и Xcode.

Минусы:

  • для сборки приложения всё равно нужен Xcode;
  • нет Intreface Builder. Открытие IB-файла из AppCode происходит в Xcode;
  • нет визуального отладчика, а также нет беспроводной отладки;
  • нет Swift Playground;
  • запуск приложения происходит на Xcode-симуляторе;
  • AppCode — платный продукт, для бесплатного ознакомления даётся 30 дней. На момент написания статьи расценки такие: за первый год пользования придется заплатить 199 $, второй — 154 $, последующие — 119 $ (данные взяты с официального сайта);
  • обновление языка приходит с некоторой задержкой. В Xcode ты получишь свежую версию ещё на бета-тестировании.

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

Нужен ли Maс?

Да. Для разработки нужна Xcode IDE (Integrated Development Environment — интегрированная среда разработки). Установить Xcode ты сможешь только на Mac. Выбирай из этих вариантов: MacBookPro/Air, iMac, MacPro или Mac mini (самый бюджетный вариант). Не обязательно покупать новый, но чтобы твой Mac мог поддерживать последнюю версию macOS хотя бы два года, советую брать тот, что не старше пяти лет.

Вариант для ознакомления — поставить на свой PC виртуальную машину при помощи, например, VirtualBox. Статья Installing MacOS to VirtualBox подробно описывает, как это сделать. Работать будет медленно, но для «быстрого старта» вполне подойдет.

Нужно ли iOS-устройство?

Необязательно. IDE Xcode от Apple содержит в себе симулятор устройств. Например, можно выбрать iPhone XR и вживую проверить результат своей работы. К сожалению, симулятор полностью не заменит реальное устройство (например, камера или акселерометр в нём отсутствуют).

Разработка приложений и игр с дополненной реальностью при помощи ARKit


ARKit — фреймворк, разработанный компанией Apple для работы с AR. Что такое AR и как это работает? AR — это технология, которая способна сканировать окружающее пространство и максимально достоверно интегрировать виртуальные объекты в реальную жизнь. Эти самые виртуальные элементы могут отображать специальные устройства, поддерживающие эту технологию:

  • cмартфоны и планшеты. В нашем случае — это iPhone и iPad;
  • AR-шлемы и очки. Одна из последних разработок — очки Magic Leap;
  • компьютеры.

Сканирование пространства происходит при помощи камеры устройства. Что может AR-приложение? Например, онлайн магазин кроссовок, в котором, помимо покупки, есть возможность отсканировать свою ногу и «примерить» понравившуюся модель, таким образом на экране твоего iPhone или iPad твоя нога будет в выбранном кроссовке. Еще один из примеров применения AR — приложение от IKEA, которое позволяет виртуально обставить квартиру мебелью.

И это далеко не все возможности! При помощи AR разрабатывают обучающие, развлекательные программы и, конечно же, игры:

Классное видео с одной из презентаций Apple, на котором при помощи AR оживает мир, сделанный из конструктора Lego.

Важно! Для разработки требуется iPhone или iPad. Хочу лишь напомнить, что в симуляторе Xcode нет камеры, и без нее не получится отсканировать пространство. В строке arkit из таблицы Device Compatibility ты можешь увидеть полный список устройств Apple c поддержкой ARKit.

Учебные материалы по ARKit: 

Разработка игр при помощи SpriteKit


SpriteKit — это фреймворк, а точнее 2D-движок, оптимизированный для создания высококачественных игр. Он существенно выигрывает в скорости у остальных движков, поскольку разработчики создавали его заточенным специально под платформу iOS. Помимо обработки всей графики, SpriteKit также предлагает широкий спектр дополнительных функций, включая физическое моделирование, воспроизведение аудио/видео, сохранение и загрузку игр.

Учебные материалы по SpriteKit:

Важно! Разработка игр для iOS не ограничивается фреймворком SpriteKit. Существует огромное количество движков для создания 2D и 3D игр. Самые популярные из них — Unity и Unreal. А создании хардкор-аркады Trigono разработчики Лайв Тайпинг использовали движок OpenFL с применением кастомных доработок.

Заключение

Самым актуальным языком разработки приложений для платформы iOS в 2019 году является Swift. Причина не только в его скорости и лаконичном синтаксисе, но и в том, что он становится стандартом разработки-де-факто и получает всё больше поддержки со стороны разработчиков Apple.

Это не отменяет необходимости знакомиться с Objective-C: на этом языке созданы полезные библиотеки, а поддержка старых, но больших и интересных проектов хорошо оплачивается.

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

Прочитайте другие наши статьи
Почему мобильные приложения делаются в первую очередь для iOS?

Владельцы айфонов поблагодарят вас за качественное приложение и быстрее окупят разработку. Это ли не повод сделать первую ставку на iOS-версию?

Что нужно знать и уметь, чтобы работать iOS-разработчиком

Необходимый минимум знаний, которыми должен владеть начинающий iOS-разработчик

Какие мобильные операционные системы устареют в 2019 году

Мобильные разработчики Лайв Тайпинг утверждают, что поддерживать старые версии ОС — значит, нести убытки, и строят прогноз на ближайшие полгода

Комментарии (0)