Программирование приложений для ios: учимся создавать приложения для iOS с нуля — «Хакер»

Содержание

учимся создавать приложения для iOS с нуля — «Хакер»

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

В сегменте мобильных технологий, без сомнения, лидирует Apple со своим смартфоном iPhone. На прошедшей в сентябре презентации компания из Купертино продемонстрировала уже 7-ю версию мобильного девайса. Вместе с ней Apple представила новую версию мобильной операционной системы iOS 10. Теперь это самая значимая операционка в мире, как и ее предшественницы. Из этого следует, что изучение разработки для iOS — самое выгодное вложение времени и средств.

«Яблочная» экосистема

Сегодня мы займемся разработкой простого мобильного приложения для iOS. Конечно, лучше всего для этого подходит родной Mac. Но если ты сторонник Windows или у тебя просто нет Мака, можно установить операционную систему macOS под виртуальную машину в Windows. На просторах Сети тебе не составит большого труда найти специально заточенную под PC версию macOS, в народе называемую Хакинтош. Смело ставь ее на виртуалку VMware, VirtualBox — на твой выбор. Сразу предупрежу, что на PC-клавиатуре нет части клавиш, которые есть на Mac-клаве, и многие их сочетания нажать в Хакинтоше невозможно. Это изрядно портит настроение. В остальном все описанные ниже операции можно успешно выполнить на Хакинтоше.

Необходимые знания

Чтобы программировать вообще и для iOS в частности, надо довольно много знать. Математика и логика, может, и не понадобятся вначале, но будут востребованы потом. Современные технологии избавили программиста от необходимости досконально знать архитектуру компьютера, однако понимать базовые механизмы, такие как системы счисления, их преобразование, скорость работы подпрограмм или эффективность алгоритмов (большое O), необходимо.

На более высоком уровне iOS-разработчику надо глубоко знать операционную систему macOS и собственно саму iOS. Также тебе обязательно надо освоить «яблочный» язык программирования. Знание Delphi, C++, C# или VB.NET тебе не сильно поможет. У Apple своя экосистема со своими языками: Objective-C и Swift. Конечно, знание C++ еще никому не навредило, программы и вставки на нем встречаются везде, даже у Apple. Но самый используемый по определению Objective-C, просто потому, что появился гораздо раньше (в середине восьмидесятых годов прошлого века), тогда как Swift лишь два года назад (в 2014-м). Apple возлагает большие надежды на новый язык и много инвестирует в него. Для поддержки старого софта используется Objective-C, а новый пишется на Swift. Поэтому тебе неплохо знать оба.

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

Инструменты для разработки

Как ты знаешь, главный инструмент разработчика под macOS и вместе с ней iOS — среда программирования Xcode. Она включает средства для создания приложений для Mac, iPhone, iPad, Apple TV, Apple Watch. Все платформы Apple. Xcode содержит средство построения интерфейса (Interface Builder), редактор кода, поддерживающего все современные средства работы с кодом. Кроме того, не выходя из Xcode, можно протестировать приложение; если оно разрабатывается для внешнего устройства, то его можно запустить в эмуляторе.

В систему включены эмуляторы всех устройств, новые версии которых можно докачать. В дополнение Xcode содержит графические инструменты для анализа производительности приложения, включая средства диагностирования загруженности CPU, использования накопителя (HDD, SDD и другие), нагрузки на графический адаптер (со стороны OpenGL).

13 сентября вышла новая, горячо ожидаемая версия среды разработки 8.0. Стабильные версии можно бесплатно скачать в App Store. Альфы и беты распространяются по подписке разработчика. Восьмая версия вобрала в себя: новую версию языка Swift 3, средство изучения Swift Playground для iPad, новую версию Interface Builder, которая стала быстрее работать и позволяет просматривать макет приложения на разных платформах, без необходимости развертывать на симуляторе само приложение.

Если у тебя старая версия Xcode, то рекомендуем обновить, поскольку мы будем использовать последнюю версию. Скачать ее можно из App Store:

Xcode 8 в Mac App Store

На Xcode 8 можно разрабатывать приложения для macOS Sierra, iOS 10, watchOS 3 и tvOS 10. Имеются все SDK. Новые версии операционок стали последовательно появляться аккурат после презентации Apple, состоявшейся в начале сентября.

Язык Objective-C

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

Как в C++, в Objective-C центральную роль играют объекты, с которыми связаны четыре парадигмы: абстракция, инкапсуляция, наследование, полиморфизм. Язык C++ является строго типизированным, тогда как Objective-C — слабо типизированный или обладает динамической системой типов данных. Подобно Smalltalk, в Objective-C объектам посылаются сообщения. Это исключительная возможность динамических языков, так как тип объектов проверяется во время исполнения программы, а не во время компиляции.

Описание языка Objective-C занимает не один объемистый томик. Поэтому, чтобы получить объективные знания, удобно пройти курс «Mobile-разработчик». Целый раздел курса посвящен этому языку.

Разработка приложения для iOS

В качестве семпла мы разработаем весьма простое приложение. Не будем отступать от священной традиции, поприветствуем мир. Однако с учетом того, что у нас графическое приложение, мы немного разнообразим его: добавим кнопку, нажимая которую будем отображать или скрывать надпись «Hello, World».

Запусти Xcode, в появившемся окне выбери Create new project или в главном меню File -> New -> Project. В следующем окне будет предложено выбрать целевую платформу и тип приложения.

Мастер создания приложений

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

Типы приложений

  • Заготовка Single View Application предназначена для простого приложения с одним экраном. Заготовка включает компонент View Controller, который позволяет настроить вид приложения с помощью конструктора форм Interface Builder.
  • Master Detail Application создает приложение, где в табличном представлении отображается коллекция объектов. После выбора одного из них показываются подробные сведения об этом объекте. Первый вид — мастер, второй — детализация.
  • С помощью Page-Based Application создаются приложения, имеющие несколько экранов, как страницы в книге. Следовательно, из этой заготовки создаются, например, читалки.
  • Tabbed application позволяет создавать приложения, где на каждый экран можно переключиться в любой момент, то есть у каждого экрана есть своя кнопка для его активации, на которой отображается заголовок. В качестве примера можно привести iTunes.
  • Game служит для создания заготовки игры. На выбор предлагаются четыре фреймворка для создания игры: SpriteKit, SceneKit, OpenGL ES, Metal. Вкратце рассмотрим их.
    SpriteKit представляет собой систему для двумерной визуализации и анимации текстурированных прямоугольников — спрайтов. При отображении кадров используется стандартный цикл, кадр выводится после того, как обработку пройдет все содержимое сцены.
    SceneKit — высокоуровневый фреймворк для визуализации трехмерной графики без помощи OpenGL. Он поддерживает загрузку, манипуляцию трехмерными объектами. В него включены: физический движок, генератор частиц и легкий способ скриптования.
    OpenGL ES — стандарт в области компьютерной графики. Позволяет визуализировать 2D- и 3D-сцены. Позволяет описать пайплайн для видеокарты: вершины проходят преобразование, собираются в примитивы, которые растеризуются в двумерное изображение и выводятся на экран. В пайплайн можно включить программируемые шейдеры.
    Metal — представляет собой низкоуровневый API, который позволит тебе выжать все мощности из твоего видеоадаптера. Отлаженные API вместе с предкомпилированными шейдерами и многопоточностью позволяют твоей игре подняться на новый уровень производительности и качества.
  • Sticker Pack Application — новый вид приложений, появившийся в iOS 10 и Xcode 8. Представляет собой набор простых или анимированных изображений, используемых в новом iMessage. Для своего создания не требует кодирования.
  • iMessage Application — новый вид приложений, появившийся в iOS 10 и Xcode 8. Позволяет создавать дополнения для iMessage, например для покупки и загрузки твоего пакета стикеров. Также можно, воспользовавшись API iMessage, создать свой аналог данного приложения, включая проигрывание аудио, видео, использование стикеров и другое.

Создание первого проекта

В качестве заготовки для нашего приложения выберем Single View Application. Поскольку мы не будем разрабатывать большую программу, нам хватит предоставляемой этой заготовкой средств. Нажимаем Next. На следующей странице мастера надо ввести имя проекта, к примеру ShowLab. В ниспадающем списке Language оставим выбранный по умолчанию язык — Objective-C. Далее в ниспадающем списке Devices оставим выбор Universal. Здесь определяется, для какого устройства (iPhone или iPad) создается приложение. Пункт Universal означает для обоих. Снимем флажки Include Unit Tests и Include UI Tests, нам никакие тесты не нужны. Next. Выберем папку для сохранения проекта. Теперь жми кнопку Create.

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

Свойства проекта

Сначала нам надо создать интерфейс приложения. Для этого одним кликом выбери файл Main.storyboard в списке слева (если этот файл не видно, разверни содержимое папки ShowLab). Правее списка все окно займет Interface Builder. В центре отобразится макет устройства. В правом нижнем углу окна находится панель компонентов. Перетащи оттуда на макет компоненты Label и Button. Выше панели компонентов находится список свойств. Если у тебя он отсутствует, нажми кнопку Show the Attributes Inspector, находящуюся под заголовком окна в правой части интерфейса.

Выдели в макете компонент Label и настрой его свойство Text: в ниспадающем списке оставь выбор Plain, в строку ниже введи нужную надпись, в нашем случае «Hello, World». Если текст не помещается в границы надписи, измени их, перетаскивая маркеры на краях компонента. Чтобы централизовать его по горизонтали, перейди на страницу Size Inspector, нажав на кнопку Show the Size Inspector (справа от Show the Attributes Inspector). На этой странице из ниспадающего списка Arrange выбери пункт Center Horizontally in Container.

Теперь выбери компонент Button, измени его свойство Text на желаемую метку — Switch. Отцентрировать можешь так же, как описано выше.

Создаем связь между графическими элементами и кодом

В Visual Studio (или Delphi) объект в коде создается автоматически в тот момент, когда кладешь визуальный компонент на форму. В Xcode этого не происходит, но это не создает проблем.

Открой содержимое заголовочного файла ViewController.h в отдельном окне, дважды щелкнув на нем. В этом файле находится объявление расширения класса UIViewController, помечается ключевым словом @interface. Такая возможность была добавлена во вторую версию Objective-C. Теперь выполни такой трюк: перемести курсор мыши на компонент — текстовую метку, зажми клавишу Ctrl и левую кнопку мыши. Перемести курсор в окно с кодом (файл ViewController.h), за курсором потянется синяя линия. Отпусти мышь и клавишу внутри описания интерфейса ViewController.

Появится окно создания Outlet’а.

Создание Outlet’а

Это свойство объекта, которое ссылается на другой объект (в данном случае визуальный компонент). Тебе надо ввести имя объекта Outlet, по нему ты будешь обращаться к визуальному компоненту, пускай будет lab. Далее выбирается тип объекта, он выбран правильно: UILabel.

Еще ниже в списке Storage выбирается тип ссылки на объект: weak или strong. Если выбрать strong, то объект, на который указывает свойство, будет существовать до тех пор, пока свойство указывает на него, в таком случае он не сможет автоматически удалиться, когда перестанет использоваться. С другой стороны, когда действует слабая ссылка (weak), объект может самоуничтожиться. Итак, выбираем тип ссылки weak и жмем кнопку Connect. В итоге в код добавится такая строка:

@property (weak, nonatomic) IBOutlet UILabel *lab;

Убеждаемся, что Outlet — это свойство.

Теперь создадим Outlet для кнопки. Алгоритм остался прежним. Только для свойства Name надо ввести другое имя, например but. В код будет добавлена строка:

@property (weak, nonatomic) IBOutlet UIButton *but;

В результате имеем два указателя на визуальные компоненты: lab и but — соответственно, надпись и кнопку. Теперь, используя указатели, мы можем манипулировать компонентами в коде.

Затем надо создать обработчик события нажатия кнопки. Для этого в отдельном окне открой файл реализации ViewController.m. Точно таким же образом, как ты перетаскивал линию в заголовочный файл для создания аутлета, от кнопки перетащи линию в файл реализации и отпусти до закрывающей командной скобки — @end. Появится окно для создания события, подобное окну создания аутлета. Видишь разницу: в заголовочном файле создается ссылка на объект, в файле реализации — метод.

Создание обработчика события

Заполни поле Name, его значение представляет имя свойства — метода. Пусть будет onClick. Значение поля Type оставь по умолчанию — id. В языке Objective-C данный тип является предком для всех остальных. В ниспадающем списке Event выбрано по умолчанию событие Touch Up Inside, которое происходит в момент отпускания указателя (мыши, пальца…) над кнопкой, то есть заключительная стадия нажатия кнопки. Это то, что нам нужно. В списке Arguments оставим значение по умолчанию: Sender — это объект, отправивший данный сигнал, в нашем случае им всегда будет кнопка. Жмем кнопку Connect. В итоге будет добавлен следующий код:

- (IBAction)onClick:(id)sender {
}

Минус в начале означает закрытый метод (private). Ключевым словом IBAction помечаются события (методы) визуальных компонентов из Interface Builder.

Между командными скобками напишем выполняемый при нажатии кнопки код:

_lab.hidden = !_lab.hidden;

В этой строчке кода мы инвертируем значение свойства hidden. Оно имеет тип BOOL, который располагает двумя значениями: YES — истина и NO — ложь (несколько непривычно Windows-программерам, где true и false).

Обрати внимание на символ подчеркивания, стоящий перед именем объекта — надписи (_lab). Без него компиляция завершится с ошибкой. Символ подчеркивания добавляется автоматически для объектов, содержащихся в других объектах; то есть в данном случае объект lab содержится в объекте ViewController. Раньше это было условное правило, используемое для различия объектов, объявленных в качестве членов класса, и локальных объектов. А теперь это строгое правило, реализованное в компиляторе языка.

Сейчас можно скомпилировать приложение и запустить его на симуляторе. Мы выбрали симулятор для iPhone 7, входящий в Xcode 8. Кнопка компиляции и запуска представляет собой черный прямоугольник и находится на панели вверху интерфейса.

После компиляции приложения, запуска симулятора и загрузки нашего приложения на экране симулятора отобразится его интерфейс: надпись «Hello, World» и кнопка Switch. Если нажать последнюю, надпись исчезнет, при повторном нажатии она появится вновь.

Мы сделали очень простое приложение для понимания сути разработки под iOS. Более подробные сведения о создании приложений для iOS на языке Objective-C ты можешь узнать из курса наших друзей из GeekBrains «Мобильный разработчик». В курсе два месяца отдается на изучение этого языка. Во время первого месяца — вводные темы, а на втором — реальный кодинг профессиональных приложений.

Язык Swift

В 2014 году Apple представила новый язык программирования — Swift. Он быстро стал самым обсуждаемым и наиболее динамично развивающимся языком в мире. Это надежный, безопасный, интуитивно понятный язык для разработки приложений под операционные системы macOS, iOS, tvOS и watchOS для всего парка устройств от Apple. Swift — эффективный язык программирования. Его легче изучать, чем его предшественника — Objective-C, в то же время Swift позаимствовал из него самые удачные идеи. Вместе с тем разработчики сделали языки совместимыми, то есть в одной программе может быть код как на Swift, так и на Objective-C. В мире имеются миллиарды строк кода и сотни тысяч унаследованных программ, написанные на Objective-C, поэтому от его поддержки точно не будут отказываться.

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

Алгоритм на языке Swift работает в 2,6 раза быстрее, чем такой же алгоритм на Objective-C, и в 8,4 раза быстрее, чем на Python. Использование Swift делает процесс разработки программ более гибким и удобным.

Благодаря своему экспоненциальному развитию, 3 декабря 2015 года язык Swift был передан в сообщество открытых исходников. При этом Apple строго следит за его развитием, организовав комитет для его разработки. Теперь Swift доступен не только в системах Apple, но также в Linux. Все дополнительные инструменты для работы с языком, включая отладчик, стандартную библиотеку, менеджер пакет, тоже свободные и открытые.

За этим языком будущее. Более подробные сведения о нем ты сможешь узнать из упомянутого курса от GeekBrains «Мобильный разработчик», в нем целый месяц отведен на изучение данного языка программирования.

App Store

Попросту говоря, App Store — это магазин контента для всего спектра Apple-девайсов. Здесь можно купить игры и приложения как от больших компаний, так и от независимых разработчиков. Каждый разработчик, в какой бы стране он ни жил, может продавать или распространять бесплатно свои программы на этой площадке цифровой дистрибуции. Чтобы начать это делать, надо зарегистрироваться как разработчик и купить лицензию для продажи своих приложений. Это плата за предоставляемый сервис и развитие магазина App Store.

Итоги

Мы разработали простое приложение для мобильной операционной системы iOS, используя для этого систему программирования Xcode вместе с языком Objective-C. Протестировали готовое приложение на симуляторе iPhone 7. Мы узнали, как построить пользовательский интерфейс с помощью Interface Builder, как связать графические элементы с кодом приложения, как создать обработчики событий. Познакомились с основами Objective-C. Кроме того, мы обратили внимание на перспективный язык Swift, используемый для разработки мощных и безопасных приложений для «яблочной» экосистемы.

Однако изученный материал — это только начало. Чтобы интенсивно прокачаться в направлении мобильного кодинга и разработки реально продаваемых приложений, мы рекомендуем пройти курс «Mobile-разработчик» на сайте наших друзей GeekBrains.

Это достойный курс: пройдя его, ты точно не потратишь время зря. Он начинается с двух подробных курсов по языку Java, затем следует изучение базового программирования под мобильную операционную систему Android. Далее курс по базам данных в общем и языку SQL в частности. Затем углубленный курс по разработке профессиональных приложений для Android. После этого вектор изучения перейдет в сторону Apple-систем: два подробных курса по языку Objective-C и полезный курс по Swift.

Программа курса

Лекции курса ведут профессиональные преподаватели, имеющие большой опыт в разработке программного обеспечения. Если что-то непонятно, можно, не откладывая, задать вопрос. Вообще, обучение на GeekBrains — живой процесс, можно общаться, задавать вопросы, помогать с ответами. Для проверки полученных знаний преподаватели выдают домашнее задание, которое затем проверяется. После прохождения обучения тебя ждет гарантированная стажировка в IT-компании. А дальше все зависит от тебя, если ты покажешь себя как грамотный специалист, тебя пригласят на работу.

Специальный проект с компанией GeekBrains

31 ссылка для тех, кто хочет освоить iOS-разработку — Академия Яндекса

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

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

Если вы только начинаете знакомиться с 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 и теперь беспокоится, как соотнести и объединить свой труд с результатами коллег по команде.

10 навыков и знаний необходимых начинающему iOS разработчику / Хабр

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

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

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

Материал адресован в первую очередь тем, кто хочет начать обучение, восполнить пробелы или понять свою готовность работать iOS разработчиком. Буду стараться пояснить все простыми словами.

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

Первые шаги


Перед тем как углубляться в последующие темы, я рекомендую подготовить фундамент, а именно 
- пройти (прослушать и воспроизвести все задания) бесплатный курс CS 193P от Stanford University и прочитать на сайте Apple документацию по Swift.

Абсолютно нормально, если вы при этом поймете или запомните не все темы, зато у вас появится основа — структурированные базовые понимания устройства iOS приложений и конструкций языка Swift. Уделив время этим вещам на старте, вам будет сильно проще добавлять знания по каждой из тем.

1. Auto Layout, Storyboard, верстка из кода


Создание интерфейса приложения на основе макета — базовый навык для iOS программиста. Знать стоит не только основные компоненты, из которых собирается интерфейс (UIView, UILabel, UIButton, UIImageView и т. д.), но и то как их расположить на экране, чтобы добиться желаемого положения и размера на разных по размеру экранах, в том числе при повороте устройства. 

Для простоты я бы выделил 3 способа создания интерфейса:
  • визуальный способ через Interface Builder
  • полностью описать интерфейс из кода
  • комбинированный вариант, когда часть содержимого экранов заведена через Interface Builder, а их настройка вынесена в код.


Навыков верстки интерфейса только через через Interface Builder на StoryBoard вам может быть недостаточно. Помимо того, что через StoryBoard вы сможете сделать далеко не все, нужно понимать, что над крупными приложениями работают несколько разработчиков, и для объединения результатов их работы используется система контроля версий (чаще всего это Git). Когда несколько человек работают над одним участком кода, результат их работы не всегда возможно объединить автоматически. Если интерфейс был сверстан программистом из кода, проводить слияния проще и быстрее чем в случае, когда код был сгенерирован Interface Builder-ом.


Чтобы освоить тему, рекомендую:


Как понять, что вы освоили тему в достаточной мере? Возьмите любое из приложений, которыми вы пользуетесь на iPhone. Можно начать со стандартных, к примеру, Apple Music. Попробуйте полностью воспроизвести один или пару экранов, которые вы видите, а также их поведение при повороте.

2. Жизненный цикл ViewController


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

Материалы по теме:


3. Работа с UITableView и UICollectionView


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

Материалы по теме:


4. Grand Central Dispatch


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

Grand Central Dispatch — одна из важных и довольно непростых тем, которую вам точно стоит знать, если вы собираетесь программировать под iOS.

Материалы по теме:


5. Работа с сетью, получение данных из JSON


Какие из ваших любимых приложений продолжают работать без подключения к Интернету? Думаю, что если откинуть игры, вы увидите, что большая часть приложений работает с данными из сети. Что в этом случае должен уметь начинающий iOS разработчик? Думаю, что создать сетевой запрос, получить и обработать данные. Знаний о URLSession для начала должно хватить. Это самый базовый подход, и я рекомендую в первую очередь освоить применение именно его. Возможно будет не лишним знать о существовании такой популярной библиотеки как Alamofire, но это не должно быть в ущерб URLSession.

Чаще всего данные, которые приходят в приложения по сети, передаются в формате JSON. Нужно уметь эти данные получить и обработать, к примеру, вывести на основе их какой-нибудь список. При этом желательно, чтобы вы умели делать это не только с помощь одной из популярных библиотек, к примеру, SwiftyJSON, но также владели стандартными средствами языка, были знакомы с Codable.

Довольно подробно про работу с URLSession рассказано в статье от Audrey Tam. Материалов по работе с JSON довольно много, можно посмотреть статью Anand Nimje.

Чтобы освоить тему на практике рекомендую сделать приложение с прогнозом погоды, в котором есть поле ввода названия города, создается запрос к API (подойдет OpenWeatherMap), и на основе полученного JSON выводится информация о погоде.

6. Знания Swift


Тут очень поможет прочтение документации. Изучение Swift может занять время, но на выходе вы должны взять с собой и свободно ориентироваться в следующих темах: 
  • классы
  • структуры
  • перечисления
  • протоколы
  • коллекции
  • методы работы с коллекциями (перебор, сортировка, фильтрация, map, reduce и т.д.)
  • работа с опционалами и исключениями

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

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

Параллельно с прочтением документации по Swift можно смотреть видео марафон по Swift Алексея Скутаренко. Этот марафон не заменит прочтение документации из-за того, что в нем раскрыты не все темы, а еще он опубликовал 4 года назад, и за это время в Swift произошли небольшие изменения. Алексей проделал грандиозный труд, полезного материала и мыслей там много.

7. Сильные и слабые ссылки, ARC, утечки памяти


Как сделать так, чтобы у приложения не было проблем с нехваткой памяти?
Что такое ссылки, какие бывают типы ссылок? Что именно делает ARC, и как избежать Retain Cycle, и что это вообще такое? Тема не сложная, но крайне важная. Ознакомиться можно, к примеру, в SwiftBook.

8. Протоколы и делегаты


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

Материалы по теме:

9. Архитектурные подходы: MVC, MVVM, MVP, VIPER


Для простоты создания и поддержки программных продуктов при разработке их разделяют на отдельные блоки. К примеру, один блок отвечает только за работу с данными, а другой за внешний вид. У такого подхода есть ряд преимуществ, к примеру, вы сможете изменить внешний вид, не трогая логику, или при необходимости сможете поменять источник данных, опять же не меняя остальные части приложения. Очевидно, что эти подходы используются не только в iOS, скажу больше — они пришли сюда из других платформ. Есть несколько устоявшихся подходов к разделению ответсвенности между разными блоками, для работы с iOS я рекомендую хорошо разобраться с MVC и MVVM.

Вместо нормального объяснения разделения отвественности в архитектуре я часто слышу на собеседованиях, что-то вроде «MVC это плохо, потому что это Massive View Controller, а MVVM гораздо лучше».

Материалы по теме:


10. Хранение данных, Core Data


Как мы говорили выше, многие приложения работают с данными из сети. Нужно уметь сохранять эти данные на устройстве, а также сохранять то, что вводил пользователь. В базовый набор способов для хранения данных для начинающего iOS программиста, на мой взгляд, входят
  • Keychain для чего-то небольшого и секретного
  • UserDefaults для небольших настроек
  • Core Data для хранения объектов, связей между ними

В этом списке нет SQLite, Realm, Firebase. Осваивать их можно при желании, но точно не в ущерб приведенным выше способам. Если у вас уже есть опыт работы с SQL, то использование SQLite на iOS я рекомендую освоить про запас, весьма вероятно, что вам такой подход к хранению покажется удобнее.

Материалы по теме:


Итог


Я считаю, что равномерно распределив указанные выше темы и уделяя учебе от 20 часов в неделю, реально даже с нуля освоить всё это за срок в 4-5 месяцев.
С таким багажом знаний можно начинать брать заказы на небольшие приложения или ходить на собеседования. К примеру, при наличии вакансии мы бы человека с таким набором знаний взяли в нашу мобильную команду.

Напишите свое законченное приложение


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

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

P.S.


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

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

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

Lrn

Lrn обучает азам таких языков, как HTML, CSS, Javascript, Python и Ruby. Уроки представляют собой небольшие интерактивные задания с подсказками. В каждом из них вы сначала читаете 2-3 предложения с теорией, после чего вставляете пропущенный код в редакторе. Часть уроков доступна бесплатно, остальные можно приобретать внутри приложения.

Mimo

Внутри программы вы найдёте несколько проектно-ориентированных курсов, которые проведут вас по всем основным этапам разработки простого приложения, сайта или игры. Помимо них, в Mimo доступны курсы, целиком посвящённые отдельным языкам и технологиям: PHP, Python, SQL, JavaScript, CSS, HTML, Git, Terminal, Swift, Java и не только. В процессе обучения вы работаете с редактором и видите, какой результат выводит написанный код.

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

Enki

Enki обучает Python, JavaScript, Linux, Java, SQL, Node, React, Git и прочим языкам и инструментам разработки. Программа может быть полезной не только для новичков, но и для людей, уже знакомых с кодом. Она содержит массу информации от истории конкретных языков до полезных советов и примеров лучших практик. Встроенные мини-игры не дают заскучать и помогают закрепить полученные знания. Часть курсов доступна только платным подписчикам.

Цена: Бесплатно

Py

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

Приложения от SoloLearn

У разработчика SoloLearn есть целая серия бесплатных приложений для изучения программирования. Каждое из них содержит чётко структурированный курс с основами того или иного языка, будь то JavaScript, Python, PHP, Java или один из множества других. К вашим услугам редактор кода для практических заданий и внутренний форум, на котором можно попросить помощи у других участников. Многие программы из этой серии переведены на русский язык.

Приложение не найдено

Цена: Бесплатно

Приложения популярных образовательных платформ

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

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

Курсы таких площадок, как Coursera, edX, Khan Academy и Stepik обычно доступны бесплатно. На остальных платформах большая часть контента продаётся за деньги.

Цена: Бесплатно

Цена: Бесплатно

Цена: Бесплатно

Stack Overflow

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

Онлайн-курсы программирования на iOS, пройти курс программирования для iPhone

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

Содержание
iOS 12 & Swift — Complete iOS Development BootcampiOS 11 & Swift 4 — The Complete iOS App Development BootcampiOS Certification Course: App Development for Creative EntrepreneursComplete iOS 12 & Swift Developer Course — Build 28 AppsThe Complete iOS 11 & Swift Developer Course — Build 20 AppsiOS 11 Tutorial & Swift 4: From Beginner to Paid ProfessionaliOS 11 and Xcode 9 — Complete Swift 4 & Objective-C CourseiOS 11 Development Course: Create Your First AppiOS 11 and Swift CourseBecome an iOS Developer — Nanodegree ProgramProfessional Certificate in Mobile Development with Swift

iOS 12 & Swift — Complete iOS Development Bootcamp

Курс нацелен на знакомство с технологиями, которые необходимы для успешной разработки приложений для iOS. Вы получите представление об объектно-ориентированном программировании, работе в сети, разработке программного обеспечения и др. Содержание программы регулярно обновляется.

Особенности курса:

  • подходит для людей без опыта,
  • работа с моделями дополненной реальности и машинного обучения,
  • к концу курса в портфолио соберется более 25 приложений,
  • в курсе: 514 лекций + 109 статей + полный пожизненный доступ.

Длительность: 54,5 часа.

Рейтинг: 4,8 из 5.

Отзыв

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

Записаться

iOS 11 & Swift 4 — The Complete iOS App Development Bootcamp

Курс учит разработке приложений для iOS 11 от начального до профессионального уровня. В работе используют Xcode 9 и Swift 4. Учебная программа также включает модули Full ARKit и CoreML.

Особенности курса:

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

Длительность: 49 часов.

Рейтинг: 4,8 из 5.

Отзыв

«Анджела потрясающая. Она мой любимый учитель iOS. Ее занятия хорошо организованы и очень понятны. Я прошел несколько курсов Udemy по iOS, и объяснения Анджелы — лучшие. Спасибо, Анджела. Я проставлю тебе выпивку, когда буду в Лондоне в следующий раз». 

Записаться

iOS Certification Course: App Development for Creative Entrepreneurs

Курс делает из новичка в Objective-C профессионального разработчика приложений для iOS.

Особенности курса:

  • учит создавать приложения с помощью Objective-C, UIKit и SpriteKit.
  • финальный проект — создание сетевой игры, в которой будут использоваться датчики на телефоне для создания уникального игрового опыта.

Продолжительность: 9 месяцев.

Рейтинг: 4,7 из 5.

Отзыв

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

Записаться

Complete iOS 12 & Swift Developer Course — Build 28 Apps

Курс позволит получить необходимые навыки для создания приложений. На уроках рассматривают XCode и Interface Builder, Swift, акселерометры, онлайн-хранилище с синтаксическим анализом и др. Для начала работы не требуется никаких предварительных знаний и опыта программирования.

Особенности курса:

  • даст хорошую базу для создания своего первого приложения на iOS,
  • постоянный фидбек от инструктора,
  • 305 лекций + 135 статей + полный пожизненный доступ.

Длительность: 44,5 часа.

Рейтинг: 4,5 из 5.

Отзыв

«Курс проходит в приятном темпе и поэтапно обучает всем концепциям создания приложений для iOS с ясными и краткими пояснениями».

Записаться

The Complete iOS 11 & Swift Developer Course — Build 20 Apps

Курс научит использовать Xcode 9 и Swift 4 для создания реальных приложений, таких как Uber и Instagram.

Особенности курса:

  • предварительные знания о разработке под iOS не нужны,
  • платное программное обеспечение не требуется, все кодирование выполняется с использованием Xcode 9,
  • 36 часов видео по запросу + 111 статей.

Продолжительность: 36 часов.

Рейтинг: 4,6 из 5.

Записаться

iOS 11 Tutorial & Swift 4: From Beginner to Paid Professional

Курс научитесь разрабатывать приложения для iOS, позволит освоить профессию на уровне junior и объяснит, как отправлять приложения iOS в Apple App Store.

Особенности курса:

  • вы изучите Swift 4, Xcode 9, Interface Builder, Firebase,
  • для прохождения курса не требуется опыт программирования.

Продолжительность: 43 часа.

Рейтинг: 4,6 из 5.

Отзыв

«Потрясающее качество обучения за небольшие деньги! Я мог бы придраться к некоторым вещам, но, в конце концов, получить столько знаний по такой разумной цене — это невероятно».

Записаться

iOS 11 and Xcode 9 — Complete Swift 4 & Objective-C Course

В течение курса вы создадите более 25 приложений для iOS 11: от забавных игр до мощных утилит.

Особенности курса:

  • вы создадите стикеры и приложения iMessage,
  • научит зарабатывать в рекламных сетях,
  • 56 часов видео по запросу + 230 дополнительных ресурсов + полный пожизненный доступ.

Длительность: 59 часов.

Рейтинг: 4,5 из 5.

Отзыв

«Я опробовал несколько курсов Udemy, но просто не чувствовал удовлетворения, все казалось таким трудным. Я нашел курс Аарона, и, впервые, все начало обретать смысл. Код начал работать с моей стороны, и это действительно воодушевляет. Буквально сегодня я отправил Аарону денежный бонус, потому что он откровенно стал „ответом на мои молитвы“, и я просто хотел выразить свою благодарность. Аарон быстро отвечает на любые вопросы, что очень и очень круто».

Записаться

iOS 11 Development Course: Create Your First App

На курсе вы изучите код, инструменты, методы и платформы, необходимые для создания приложений на iOS 11. Узнаете, как работать с Xcode и SDK.  

Особенности курса:

  • уроки можно просматривать как онлайн, так и оффлайн,
  • курс разделен на 3 подробных раздела.

Продолжительность: 1 час 36 минут.

Рейтинг: 4,7 из 5.

Записаться

iOS 11 and Swift Course

Для прохождения курса опыт в программировании не требуется. Курс сформирует базовое понимание Xcode и Swift. 

Особенности курса:

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

Продолжительность: 3 часа 13 минут.

Рейтинг: 4,6 из 5.

Записаться

Become an iOS Developer — Nanodegree Program

На курсе вы овладеете языком программирования Swift и начнете разрабатывать приложения для iOS. На вводных занятиях вы познакомитесь с основами и создадите свое первое приложение с помощью Swift и Xcode. Научитесь использовать такие функции, как AutoLayout, UIButtons, UILbels, ViewController. Весь курс вы будете работать над проектом, который потом сможете разместить в App Store. 

Особенности курса:

  • создадите портфолио приложений iOS для iPhone и iPad,
  • курс содержит полное руководство по выполнению необходимых установок и настроек,
  • интерактивные примеры и подробные объяснения,
  • оценка работы и рекомендации и советы от наставника.

Продолжительность: 6 месяцев (10 часов в неделю).

Рейтинг: 4,5 из 5.

Записаться

Professional Certificate in Mobile Development with Swift

Программа познакомит с несколькими инструментами, методами и концепциями, которые необходимы для создания базового приложения для iOS с нуля. Кроме этого, вы узнаете, как программировать на Swift и продавать приложения через App Store. Программа состоит из трех разных курсов.

Особенности курса:

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

Продолжительность: 2-4 месяца.

Рейтинг: 4,6 из 5.

Записаться

4 совета для тех, кто хочет стать iOS-разработчиком

Салават Ханов

Основатель сервиса блокировки рекламы 1Blocker.

Компания SuperJob назвала мобильных разработчиков самыми востребованными IT‑специалистами на рынке в 2020 году. Если раньше iOS‑алгоритмы были менее доступны, то сейчас, благодаря появлению нового языка программирования Swift, работать с этой системой намного проще. Однако нужно знать не только технические термины и методы.

1. Относитесь к обучению правильно

Последовательный подход к обучению значительно повлияет на качество дальнейшей работы.

Получите фундаментальные знания

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

Так что начните с освоения тех знаний, которые не зависят от области разработки. Изучите основы программирования, алгоритмы, архитектуру приложений и паттерны. Если вам будет удобнее осваивать их, делая разработку на Android, то так тому и быть. А вот после получения базовых знаний можно начать специализацию.

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

Советую освоить язык программирования Swift — безопасный, новый, относительно простой, позволяющий писать короткий код. Также следует знать Xcode — среду разработки для iOS. Именно в ней проходят написание кода, тестирование и автоматизация.

Также хочу посоветовать изучать SwiftUI, так как он позволяет создавать интерфейсы. Его преимущество в том, что он универсальный: разработанные элементы могут быть использованы на разных платформах (iOS, macOS, tvOS, watchOS). С помощью Auto Layout можно создавать интерфейс, который будет автоматически подстраиваться под заданные правила.

Большинство крупных компаний использует технологию Git, позволяющую нескольким программистам взаимодействовать в рамках одного проекта, так что её нужно знать обязательно. Зачастую в разработке применяют готовые графики, которые можно добавить в приложение через CocoaPods, так что стоит ознакомиться и с этим сервисом.

Изучайте новые для себя области

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

Чтобы стать ценным специалистом, понадобятся навыки работы с удалённым API, JSON. Очень важно уметь применять Grand Central Dispatch. Также необходимо уметь работать с базой данных Core Data / Realm и досконально изучать официальную документацию Apple.

2. Играйте в шахматы

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

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

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

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

3. Делайте свои маленькие проекты

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

Например, вы можете создать утилиту с использованием новых технологий, которые анонсировала Apple. Например, на основе новых виджетов в iOS 14 можно сделать свой виджет, который показывает баллы пробок или остаток на счёте в банке. Можно даже замахнуться на собственное приложение. Но начинать лучше с простого: to‑do‑менеджер, прогноз погоды, калькулятор, фильтры для фото, шагомер. Небольшой проект будет полезен не только для оттачивания навыков, но и для портфолио при трудоустройстве — так вы сразу сможете показать нанимателю, что вы умеете и как реализовали это на практике.

Помните, что главная цель ваших первых проектов — помочь вам расти как iOS‑разработчику. Успех приложения на рынке не так важен. Даже если что‑то будет идти не так, пробуйте ещё. Опыт ошибок даже ценнее положительного результата — так вы вырастете быстрее.

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

4. Успевайте за трендами

Apple регулярно анонсирует изменения в iOS, и разработчик должен их знать. Не просто потому, что это трендово. Подобные изменения также делают жизнь разработчика проще, а разработку — быстрее.

Следить за новшествами можно на Apple WWDC, Apple Developer Forums. Также для iOS‑разработчиков есть неофициальная рассылка. Она может быть очень полезной не только для молодого специалиста, но и для программиста со стажем.

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

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

Читайте также 🧐

редакторы кода, компиляторы, shell-клиенты и сетевые утилиты для iOS — «Хакер»

Содержание статьи

Вероятно, еще после покупки своего первого мобильного гаджета от Apple ты задавался вопросом, как выжать из него нечто большее, чем прослушивание музыки и чтение книг. Да, здесь тонны софта на все случаи жизни, но как насчет того, чтобы сделать чекаут своего приложения из GitHub, внести в него правки и затем залить на сервер по SSH? А ведь это вполне возможно сделать, если знать как.

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

 

Редакторы кода

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

 

Textastic

Textastic, вероятно, самый популярный и многофункциональный редактор. Впрочем, разработчики знают цену своему творению — в App Store программу можно найти за 10 долларов, что по меркам данного магазина немало. Конечно, при наличии jailbreak на аппарате можно скачать редактор в одном из многочисленных хранилищ пиратского софта, но отсутствие эксплоитов для последних версий iOS значительно усложняет бесплатное приобретение утилиты.

Однако, рассмотрев возможности Textastic, опытный программист, скорее всего, сделает вывод, что заплатить за эту программу все же стоит. Достаточно взглянуть на возможности утилиты:

  • Поддержка огромного количества языков программирования с соответствующей подсветкой синтаксиса.
  • Блоки спецсимволов над клавиатурой.
  • Интеграция с iCloud Drive и богатые возможности распространения полученных результатов.
  • Возможность видеть и редактировать файлы на удаленном FTP/SFTP-сервере, в облачном хранилище Dropbox или используя технологию WebDAV.
  • Создание папок, файлов и изображений, которые будут отображаться в меню слева.
  • Поддерживается произвольный уровень вложенности. При создании файла можно выбрать его кодировку.
  • Менеджер файлов.
Интерфейс программы Textastic

В качестве бонуса можно выделить гибкие настройки оформления. Есть возможность выбрать шрифт и его размер, тему и цвет интерфейса, включить автокоррекцию, защитить программу паролем или отрегулировать межстрочные интервалы и отступы. Другая фишка — поддержка 3D Touch в новейших моделях iPhone, многозадачности в планшетах и оптимизации под тринадцатидюймовый iPad Pro.

В общем, Textastic действительно универсальный редактор, однако и у него есть свои недостатки. Например, нет интеграции с GitHub, да и цена программы не радует. Потому стоит обратить внимание и на альтернативы этому решению.

 

Koder

Один из ближайших конкурентов Textastic — менее дорогая, но практически не уступающая по функциональности утилита Koder. Здесь можно добавить кастомные клавиши на верхнюю панель клавиатуры, подключиться к SSH-серверу. Настройки оформления, передача данных по FTP, защита файлов паролем и поддержка не меньшего, чем в Textastic, количества языков программирования — все это также присутствует в данном приложении. Еще есть клавиша в верхней панели для удобного перемещения по коду, облачная синхронизация, гибкий поисковый движок с возможностью замены, настройка прав доступа на серверах, превью HTML-файла в окне браузера и поддержка iTunes File Sharing. Из удобных особенностей — поддержка нескольких вкладок при редактировании файлов. Так что данный редактор отнюдь не хуже Textastic, мало того, он обладает многими небольшими, но оттого не менее приятными преимуществами. И это при значительно меньшей цене.

Интерфейс программы Koder

Существует еще множество других решений — клиент онлайн-сервиса codeanywhere, iEditor, Code Master и прочие. Однако они серьезно уступают по функциональности первым двум программам, являющимся, безусловно, лидерами данного сегмента утилит, потому рассматривать их отдельно не будем.

 

Интерпретаторы и компиляторы

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

Программистам, использующим C и C++, вероятно, пригодится лаконичная IDE CppCode. Здесь имеется небольшой менеджер файлов без поддержки вложенности, собственно редактор с подсветкой синтаксиса, простенький отладчик и компилятор. В верхней панели расположены шорткаты таким же образом, как это реализовано в Textastic, а еще здесь присутствует кнопка для быстрой навигации по коду. Аскетичные параметры программы расположены в нативном приложении «Настройки». Важная особенность — есть немало примеров уже готового кода, что будет полезно для начинающих программистов. Жаль только, русский в данной утилите не поддерживается.

Настройки CppCode расположены в нативном приложении

У CppCode есть и платная Premium-версия (сама же утилита распространяется бесплатно). Однако и стандартных возможностей будет вполне достаточно для быстрого программирования. В общем, IDE достаточно простая, но стабильная и быстрая, а это важно для подобных утилит.

Свое решение есть и для Python. Точнее, интерпретаторов для него великое множество, они выпущены отдельно для каждой версии языка. Простая на вид программа содержит немало функций. В левом окне можно писать сам скрипт или вводить терминальные команды. В правом окне будет отображаться результат исполнения скрипта. Клавиатура, как и в других редакторах, оснащена верхней панелью, правда не такой функциональной, зато немного более понятной по сравнению с тем же CppCode. Среди преимуществ серии прочих интерпретаторов — большой набор документации, которую можно загружать непосредственно в саму программу и использовать в режиме офлайн. Также имеется набор скриптов.

Для iOS есть и интерпретатор JavaScript (а точнее, интерфейс к встроенному движку). Называется он JavaScript Anywhere. Организация рабочего пространства привычная: слева панель документов, справа — панель для редактирования кода. Собственно рабочая часть дисплея имеет три вкладки — HTML, CSS и JS. Предусмотрен менеджер загрузки изображений и интеграция с Dropbox. Однако панель спецсимволов отсутствует.

Последним рассмотрим компилятор для CoffeeScript под названием CoffeeScript At Once. В целом он мало чем отличается от утилиты для JS. Практически тот же интерфейс, набор настроек и опций. К трем верхним кнопкам в рабочей области добавлены еще две — EXT и RUN. В последней отображается уже скомпилированный код. Присутствует панель спецсимволов, чуть больше набор настроек отображения, есть интеграция с GitHub. Вот, собственно, и все отличия из тех, которые пользователь сможет заметить «с первого взгляда».

 

Справочники

Какими бы глубокими ни были твои познания в программировании, тебе всегда потребуется что-либо уточнить или узнать. Конечно, нужную информацию можно найти в Сети, но намного удобнее будет воспользоваться офлайн-справочником, где все сведения систематизированы и представлены в удобном виде. Именно таким браузером документации является утилита Dash. Данная программа предоставляет структурированную информацию по самым различным языкам и фреймворкам. Здесь и AppleScript, и C++, и .NET. Для того чтобы просмотреть справочник, необходимо загрузить файлы, а вся документация займет немало места на аппарате. Тем не менее для программиста любого уровня эта утилита исключительно полезна, а если учесть возможность загружать собственные наборы справочников, и вовсе переходит в категорию must have.

Введение в справочник по AppleScript

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

 

Git, GitHub и MySQL

Хотя iOS-устройства все же не могут считаться прекрасным инструментом для работы программиста или администратора, на них имеется клиент популярной системы контроля версий Git. Он называется Working Copy и располагает большими возможностями.

Программа позволяет найти требуемый репозиторий GitHub или BitBucket, клонировать его на устройство и изменить его файлы. Само изменение кода осуществляется через сторонние редакторы (те же Textastic или Koder). Данная возможность реализована благодаря появившейся в iOS 9 технологии Document Picker, позволяющей редактировать один и тот же файл при помощи различных программ от сторонних разработчиков. В самой программе тоже есть редактор, который вызывается через меню Action при свайпе вправо по объекту.

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

Для iPhone и iPad есть и клиент GitHub — самого популярного сервиса для коллективной разработки проектов. Бесплатный iOctocat поддерживает некоторые функции ресурса. В основном, конечно, это просмотрщик и программа для общения разработчиков. При помощи данной программы (в бесплатной версии, есть еще Basic и Pro) нельзя создать репозиторий или форк существующего проекта. Отсутствуют также функции скачивания всего проекта и многие другие. Вероятно, они есть в платной версии, равно как и доступ к приватным репозиториям, за открытие которого разработчики данной программы взимают дополнительную плату. Еще в Pro-версии доступны Push-уведомления для более удобной переписки.

Pro- и Basic-версии iOctocat

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

Мобильные устройства Apple обладают возможностью работать и с базами данных MySQL. Для этого предназначены несколько программ, среди них QueryDB и Navicat. Navicat — продвинутое приложение для работы с БД. Его стоимость — 16 долларов, что совсем немало. Однако и возможности данной программы очень велики:

  • Создание и изменение различных баз данных. Совместная работа с БД с использованием сервиса Navicat Cloud.
  • Набор фильтров и поиск данных.
  • Неограниченное количество подключений с использованием SSH/SSL.
  • Инструменты для автоматизации создания баз данных.

Бесплатная утилита QueryDB — намного более простое решение. Это инструмент для создания и редактирования БД. Программа имеет платную версию с поддержкой SSH. Для того чтобы убрать рекламу, потребуется заплатить 3 доллара.

 

SSH и FTP-клиенты

Перейдем к поиску лучших SSH-клиентов. Одно из наиболее известных решений — Prompt. Среди возможностей программы — неограниченное количество «закладок» с данными серверов, структурирование подключений при помощи папок, сохранение паролей, кастомизация интерфейса программы (темная и светлая темы, изменение размера шрифта). Верхнюю панель клавиатуры также можно изменять. Данные серверов синхронизируются между всеми iOS-устройствами с использованием функции Panic Sync. Сохранение наиболее используемых команд (Clips) и защита при помощи Touch ID — приятные особенности утилиты.

Интерфейс программы Prompt

Также есть и программа для работы с FTP/SFTP-серверами под названием Transmit. Это версия популярной Mac-утилиты для iOS-устройств. Возможности приложения таковы:

  • Подключение к серверу, переименование, добавление объектов, смена прав доступа и создание папок.
  • Отправка на сервер любого файла из поддерживаемых iOS-приложений.
  • Возможность передачи данных в фоновом режиме.
  • Редактирование любых документов на сервере в других iOS-программах при помощи технологии Document Picker.
  • Синхронизация данных серверов между устройствами.

Стоимость программы — 8 долларов.

 

Утилиты для анализа сети

В задачи администратора входит и проведение диагностики сети. Для этого в iOS также есть свои программы. Во-первых, это приложение iNetTools (есть бесплатная версия и платная за 5 долларов). Бесплатно в ней доступны инструменты Ping, Trace, DNS Lookup, Port Scan. В платной версии есть также функции Whois, Server Monitor, LAN Scan. В списке My Server List отображаются все серверы, к которым ранее производилось подключение. Для начинающих пользователей предусмотрена небольшая справочная информация.

Стартовый экран iNetTools

Для сканирования сетей предназначена утилита IP Network Scanner. Она позволяет находить устройства в Сети, отображает Mac-адреса и IP. Для удобства поиска устройствам можно присваивать иконки и произвольные имена. Можно открыть аппараты по найденному адресу в браузере или в любой программе, поддерживающей эту функцию. Также возможна тонкая настройка программы, добавление устройств в список вручную, выбор стиля сканирования (отображать всю или только подтвержденную несколько раз информацию).

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

 

Заключение

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

Лучший язык программирования для разработки приложений iOS

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

Вы начали с правильного вопроса.

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

Видите ли, не все языки созданы равными, и получаемые вами результаты в значительной степени определяются структурой, которую вы выбрать использовать.

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

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

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

Итак, давайте начнем с этого: ваше приложение даже требует от вас обучения программированию?

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

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

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

Это все разные типы приложений, и они предъявляют совершенно разные требования к необходимому времени и опыту.

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

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

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

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

Вы стремитесь стать разработчиком приложений или это разовый проект? Планируете ли вы разработать ряд приложений в течение следующих нескольких лет?

Знание своих целей поможет вам понять, сколько времени вы можете потратить на то, чтобы приложение стало реальностью.

Как видите, на создание хорошего приложения требуется уйма времени.

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

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

Вот проблема, которую я вижу все время. У кого-то есть блестящая идея для приложения, и они хотят сразу же приступить к работе, написав его сами.

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

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

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

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

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

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

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

Предварительные требования для написания кода вашего первого приложения

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

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

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

В настоящее время доступно более дюжины iOS-устройств , и каждое из них занимает менее 20% всего рынка.

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

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

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

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

Если вы собираетесь создавать приложения для магазина приложений через Xcode, вам необходимо подписаться на отправку приложений.Это будет стоить 99 долларов, прежде чем вы сможете продать его в магазине приложений.

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

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

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

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

Эти вещи могут показаться тривиальными, но каждый элемент играет роль в том, одобрено ли ваше приложение Apple или нет.

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

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

Лучшие языки для кодирования приложений iOS

Если говорить об этом, на самом деле существует всего два языка, используемых для разработки iOS . Основными языками, которые доминируют, являются Objective-C и Swift.

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

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

Objective-C

При первой разработке приложений для iOS Apple выбрала язык Objective-C.

Лицензия была предоставлена ​​соучредителем Apple Стивом Джобсом, когда он основал компьютеры NeXT в 1980-х годах, и он перенес язык в Apple.

Как и многие другие языки программирования, такие как C ++ и C #, Objective-C основан на языке C.

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

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

Однако, если вы собираетесь При разработке приложения для iOS я, честно говоря, не могу рекомендовать начинать с Objective-C.

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

Они назвали это «Objective-C без C» и, судя по всему, предпочитают, чтобы программисты использовали Swift.Он становится все более распространенным и является языком программирования по умолчанию для приложений iOS.

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

Вот основы Swift.

Swift

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

Swift проще в использовании, чем Objective-C, и это явно будущее разработки приложений для iOS. Это отправная точка для всех, кто разрабатывает приложения для iPhone или iPad.

Swift может похвастаться некоторыми большими именами, используя свой код, включая приложения Firefox и WordPress для iOS. С течением времени крупные компании будут продолжать переходить на новый язык.

Было бы неплохо быть на шаг впереди и познакомиться со Swift.

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

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

Все вместе сделало его одним из самых быстрорастущих языков в истории .

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

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

BuildFire Software Development Kit (SDK)

Если вы хотите сэкономить много времени, но все же хотите избавиться от проблем с программированием, BuildFire SDK может стать вашим билетом .

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

Если вы хотите создать что-то действительно уникальное и новаторское, не ищите ничего, кроме BuildFire SDK. Это способ добавить в приложение новые плагины и функции.

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

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

BuildFire SDK — это «лучшее из обоих миров», которое сэкономит вам массу времени в долгосрочной перспективе.

Теперь, когда вы знаете, какой язык изучать, с чего начать?

Лучшие ресурсы для обучения разработке приложений для iOS

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

Это было бы похоже на изучение архитектуры, просто глядя на здания.

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

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

Вот три отличных ресурса для обучения программированию приложений iOS.

Codecademy

Codecademy позволяет проверять свое обучение в процессе обучения. Это отличный способ поэкспериментировать и получить немедленную обратную связь о своих успехах.

Вы можете ввести свой код в браузер, и Codecademy сообщит вам, правильно ли он.

Еще одним преимуществом Codecademy является то, что она бесплатна. Вы можете начать, не платя ни копейки.

Treehouse

Treehouse функционирует, предоставляя вам доступ к тысячам видео, которые преподают эксперты по каждой теме.

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

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

Treehouse бесплатно в течение недели, затем 25 долларов в месяц.

Code School

Code School работает аналогично Treehouse, но с добавлением забавных задач и геймификации.

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

Code School стоит 29 долларов в месяц или 19 долларов в месяц при ежегодной оплате.

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

Ускорение процесса обучения

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

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

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

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

Тем не менее, чем быстрее вы научитесь выполнять работу, тем лучше.

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

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

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

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

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

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

В-третьих, необходимо понимать основы разработки приложений.

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

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

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

Последнее слово о языках программирования для приложений iOS

В этой статье вы узнали основы начала работы с приложением iOS.

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

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

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

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

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

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

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

У каждого есть свои преимущества и недостатки, но поскольку Swift является предпочтительным языком Apple и быстро набирает популярность, это естественная отправная точка.

Чтобы ускорить процесс кодирования, я рекомендую вам использовать интерактивные обучающие программы, такие как Codecademy, Treehouse и Code School.

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

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

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

А теперь иди и создай приложение своей мечты!

.

Лучший язык программирования для разработки приложений iOS

Лучший язык программирования для разработки приложений iOS

Продукты Apple iPhone и iPad стали стандартом для мобильных смартфонов и планшетов. Apple Watch — одни из самых продаваемых умных часов в мире. Все эти устройства Apple работают под управлением операционной системы Apple iOS.

Если вы хотите создавать приложения для iPhone, iPad или Apple Watch, вам необходимо изучить разработку для iOS.В этой статье я расскажу о самых популярных языках программирования для iOS и о том, какой язык вы должны выбрать для своего следующего приложения для iOS.

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

1. Objective-C

2. Swift

3. C #

4. Python

5. C ++

6. HTML 5

Objective-C

Objective C был разработан Томом Лавом и Брэдом Коксом в 1984 году.До того, как Apple запустила Swift в 2014 году, Objective C был основным языком мобильных приложений Apple iOS. Objective-C — это объектно-ориентированный язык программирования общего назначения, который привносит вкус Smalltalk в язык программирования C. Передача сообщений между объектами — ключевая функция Objective-C, которая стала действительно полезной для операционных систем Apple iOS.

Сегодня Swift превзошел Objective-C по популярности и полезности.

Objective-C — это надмножество языка программирования C, обеспечивающее объектно-ориентированные возможности и динамическую среду выполнения.Objective-C наследует синтаксис, примитивные типы и операторы управления потоком C и добавляет синтаксис для определения классов и методов. Он также добавляет поддержку на уровне языка для управления графом объектов и объектных литералов, обеспечивая динамическую типизацию и привязку, откладывая многие обязанности до времени выполнения.

Swift

Swift — это основной язык программирования операционной системы iOS. Swift был разработан и запущен Apple в 2014 году.В декабре 2015 года Apple открыла исходный код Swift по лицензии Apache License 2.0. Помимо iOS, Swift также является языком программирования для macOS, watchOS, tvOS, Linux и z / OS.

До Swift основным языком разработки для iOS был Objective-C. Objective C был 30 лет назад, поэтому язык не отвечал современным требованиям. Swift — это современный язык программирования, который предоставляет современные языковые функции, такие как динамическое, безопасное, позднее связывание и расширяемость.

Ранее в 2018 году Swift превзошел Objective-C по популярности и стал языком программирования №1 для iOS и других операционных систем Apple.Swift — это очень рекомендуемый язык для создания новых платформ iOS, tvOS и watchOS.

Чтобы изучить Swift, вот полный учебный курс по Swift.

Разработка iOS с помощью Swift 4 включает ARKit, CoreML, дизайн приложений и многое другое.

C #

Язык C # был создан Андерсом Хейлсбергом в Microsoft и запущен в 2000 году. C # — это простой, современный, гибкий, объектно-ориентированный, безопасный язык программирования с открытым исходным кодом.C # — один из самых универсальных языков программирования в мире.

C # позволяет разработчикам создавать все виды приложений, включая клиенты Windows, консоли, веб-приложения, мобильные приложения и серверные системы.

Разработчики на C # могут создавать собственные мобильные приложения для iOS и Android с помощью Xamarin. Xamarin — это инструмент в составе Visual Studio, который позволяет разработчикам писать код C #, который скомпилирован для собственных двоичных файлов iOS и Android. Эти двоичные файлы работают точно так же, как любое собственное приложение, написанное с использованием других языков iOS и Android, таких как Swift или Kotlin.

C # предлагает разработчикам возможность создавать собственные мобильные приложения для iOS и Android без изучения нового языка программирования.

Python

Python — один из самых популярных языков программирования последнего времени. Python, созданный Гвидо ван Россумом в 1991 году, является языком программирования общего назначения высокого уровня с открытым исходным кодом. Python — это динамический язык программирования, поддерживающий объектно-ориентированные, императивные, функциональные и процедурные парадигмы разработки.Python очень популярен в программировании машинного обучения.

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

C ++

C ++ — один из старейших и самых популярных языков программирования. В разработке для Android C ++ используется для создания API-интерфейсов и внутренних задач. Существует несколько популярных встроенных библиотек C ++, доступных разработчикам iOS для использования в своих приложениях.

HTML 5

HTML 5 в сочетании с CSS и другими технологиями можно использовать для создания гибридных приложений iOS. Эти приложения не являются родными. Гибридные приложения охватывают элемент управления браузера и используют HTML и CSS для отображения страниц в приложениях.

Заключение

iOS — вторая по популярности операционная система в мире после Android. Objective-C и Swift — два основных языка программирования, используемых для создания приложений для iOS.Хотя Objective-C — более старый язык программирования, Swift — это современный, быстрый, понятный и развивающийся язык программирования. Если вы новый разработчик и хотите создавать приложения для iOS, я бы порекомендовал Swift.

Вот полный курс программирования на Swift

.

iPad iPhone »Digitrode.ru

« Магазин приложений Apple. IPad 2018.



Coda


Mac, Coda iPhone iPad. Apache, C, HTML, Go, CSS, PHP, Perl, Python, javascript. Coda, (SFTP, WebDAV, Amazon S3 DreamObjects) (клипы),.


Центр программирования


« Python, Assembly, HTML, VB.NET, C, C ++, C #, javascript, PHP Java. ,. , 4,3 Google Play 56000.


Buffer Editor


Buffer« Dropbox, Github, iCloud SSH, SFTP FTP-. Буферный Unicode, Vim. Редактор буферов, ASP, AWK, ActionScript, Ada, Arduino, C, C ++, C #, CSS, HTML, INI, Java, javascript, Perl, PHP, Progress, Puppet, Python, R, Ruby, SQL.


javascript Anywhere


Java Anywhere, 2010, javascript, HTML CSS iOS. ,, Dropbox. Базовый, jQuery, React Bootstrap.


Mimo


Mimo, iPad.. Apple, Mimo, HTML, CSS Python. ,,,.


OmniGraffle 3


OmniGraffle 3 — Apple,,. ,,. javascript,,.


Codea


Codea. Lua,,,,,,. Магазин приложений Codea Xcode.


AppCooker


AppCooker iPhone, iPad Apple Watch, AppTaster. AppCooker iOS 8.AppTaster iOS Jpeg, PNG PDF.


CodeToGo


CodeToGo, Ruby, Python, Java Perl,. ,. Dropbox« iTunes. , API ideone.com.

© digitrode.ru

: iPad, iPhone

.Учебное пособие по

iOS: Как создать простое приложение для iPhone: Часть 1/3

Обновление 6/02/14: Полностью обновлено для iOS 7 от Хорхе Джордана.

iPhone — отличная платформа для независимых разработчиков программного обеспечения. Еще никогда не было так просто придумать собственную уникальную идею приложения, что-то придумать и сделать ее доступной миллионам потенциальных клиентов!

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

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

Итак, какое приложение вы собираетесь сделать? Что ж, за этим стоит история…

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

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

  • Что нужно для начала разработки iPhone
  • Как хранить данные вашего приложения в Model
  • Как использовать представления таблиц — включая добавление и удаление строк
  • Как создать подробный вид для строки
  • Как поддерживать ориентацию Книжная и Альбомная
  • Как использовать контроллеры навигации
  • Как использовать подборщик изображений
  • Как использовать общие элементы управления, такие как текстовое поле, кнопка и изображение
  • Как добавить значки и изображения по умолчанию
  • Бонус: Как обрабатывать длительные операции

Звучит много, но не пугайтесь — багов вам не страшно!

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

Это руководство по iOS предназначено для начинающих разработчиков iOS, однако предполагается, что вы знакомы с Objective-C и программированием в целом. Если вы новичок в Objective-C, я рекомендую сначала прочитать Руководство Apple по языку программирования Objective-C.

Что вам нужно

Перво-наперво — для разработки под iPhone вам понадобится Mac. Практически любой Mac подойдет, если он достаточно мощный для работы с последней версией Mac OS, Mavericks.Но если вы хотите пойти по дешевому пути, вы можете купить Mac Mini относительно дешево, и он отлично подойдет для машины для разработки.

Затем вам понадобится копия XCode, IDE Apple для разработки под iOS. Так что, если вы еще этого не сделали, зарегистрируйте бесплатную учетную запись в Центре разработки для iPhone и загрузите копию Xcode из Mac App Store.

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

Если вы серьезно относитесь к разработке iOS, вам, вероятно, также понадобятся физические устройства (iPhone 4 / iPhone 5 / iPod Touch / iPad). Это правда, что вы можете проводить много тестов с помощью только симулятора, но есть некоторые API, которые не работают на симуляторе, и вам понадобится физическое устройство для тестирования производительности.

Вот и все — так что, если вы еще этого не сделали, возьмите копию XCode , запустите ее и продолжайте!

Привет, табличный вид!

Вы начнете с использования одного из самых распространенных элементов управления на iPhone — Table View .Вы, наверное, уже видели Table View во многих приложениях. Вот несколько примеров:

Так или иначе, на вашем первом экране в приложении будет один из них, чтобы отобразить список страшных ошибок!

Начните с перехода к File \ New Project… в XCode , выберите iOS \ Application \ Master-Detail Application и щелкните Next .

На следующей странице введите ScaryBugs для Product Name , введите уникальную строку для идентификатора вашей компании ( com.yourcompanyname or com. yourname is best), выберите iPhone в раскрывающемся списке Devices и введите RWT как Class Prefix . По завершении нажмите Далее .

Выберите место для сохранения проекта и нажмите Create . И прежде чем делать что-либо еще, проверьте, чего вы уже достигли! В главном меню выберите Product \ Destination \ iOS Simulator \ iPhone Retina (3,5 дюйма) , затем нажмите кнопку Run .Если все пойдет хорошо, вы должны увидеть в своем симуляторе следующее:

Вы можете нажать кнопку + , чтобы создать новую запись, а затем нажать новую строку, чтобы просмотреть подробное представление для нее:

Итак, как видите, у вас уже есть рабочий проект, с которого можно начать, поскольку вы выбрали шаблон Master-Detail Application .

Вы не собираетесь копаться в шаблоне, поскольку это выходит за рамки данного руководства по iOS, но просто обратите внимание, что у вас есть пустое табличное представление и подробное представление, настроенное и готовое к работе — вам просто нужно заполнить его данными !

Итак, для этого создайте класс, чтобы отслеживать ваши пугающие ошибки.

Страшная модель данных: организация

Обратите внимание на иерархию папок в разделе Project Navigator XCode:

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

Сначала создайте новую группу для хранения файлов пользовательского интерфейса. Для этого нажмите , удерживая клавишу Control, группу Scary Bugs и выберите New Group . Затем элемент управления щелкните новую созданную группу, выберите переименовать и назовите ее GUI . Перетащите существующие файлы из корня в группу GUI (но не вспомогательные файлы). Теперь это должно выглядеть так:

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

Прежде чем начать, важно знать, как все будет организовано в этом руководстве:

  1. RWTScaryBugData : содержит название и рейтинг ошибки.
  2. RWTScaryBugDoc : Содержит полноразмерное изображение, эскизное изображение, RWTScaryBugData.

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

Страшная модель данных: реализация

Хорошо, поэтому Удерживая клавишу Control, щелкните в группе Model и щелкните New File… . Выберите шаблон iOS \ Cocoa Touch \ Objective-C class и щелкните Next .

Назовите класс RWTScaryBugData , введите NSObject для подкласса и нажмите Next .

В последнем всплывающем окне снова нажмите Create . Если все прошло хорошо, ваш Project Navigator теперь должен выглядеть примерно так:

Хорошо, пора создать класс RWTScaryBugData .Замените RWTScaryBugData.h следующим:

#import 

@interface RWTScaryBugData: NSObject

@property (strong) NSString * title;
@property (assign) рейтинг плавучести;

- (id) initWithTitle: (NSString *) title rating: (float) rating;

@конец
 

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

  • strong : указывает, что среда выполнения должна автоматически сохранять сильную ссылку на объект. Это причудливый способ сказать, что среда выполнения ARC будет сохранять объект в памяти, пока существует ссылка на него, и освобождать его, когда ссылок не остается. Для получения дополнительной информации ознакомьтесь с учебным пособием Beginning ARC в iOS 5.
  • assign : это означает, что свойство устанавливается напрямую, без участия управления памятью.Это то, что вы обычно устанавливаете для примитивных (не объектных) типов, таких как float.

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

Переключитесь на RWTScaryBugData.m и замените его следующим:

#import "RWTScaryBugData.h"

@implementation RWTScaryBugData

@synthesize title = _title;
@synthesize rating = _rating;

- (id) initWithTitle: (NSString *) title rating: (float) rating {
  if ((self = [super init])) {
    я.title = title;
    self.rating = рейтинг;
  }
  вернуть себя;
}

@конец
 

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

Хорошо, это все для RWTScaryBugData . Теперь выполните те же шаги, что и выше, чтобы создать еще один подкласс NSObject , на этот раз названный RWTScaryBugDoc .

Замените RWTScaryBugDoc.h следующим:

#import 

@class RWTScaryBugData;

@interface RWTScaryBugDoc: NSObject

@property (strong) RWTScaryBugData * data;
@property (сильный) UIImage * thumbImage;
@property (сильный) UIImage * fullImage;

- (id) initWithTitle: (NSString *) рейтинг заголовка: (float) рейтинг thumbImage: (UIImage *) thumbImage fullImage: (UIImage *) fullImage;

@конец
 

Здесь ничего особенного — просто создание некоторых переменных / свойств экземпляра и инициализатора.

Замените RWTScaryBugDoc.m следующим:

#import "RWTScaryBugDoc.h"
#import "RWTScaryBugData.h"

@implementation RWTScaryBugDoc
@synthesize data = _data;
@synthesize thumbImage = _thumbImage;
@synthesize fullImage = _fullImage;

- (id) initWithTitle: (NSString *) рейтинг заголовка: (float) рейтинг thumbImage: (UIImage *) thumbImage fullImage: (UIImage *) fullImage {
  if ((self = [super init])) {
    self.data = [[RWTScaryBugData alloc] initWithTitle: рейтинг заголовка: рейтинг];
    я.thumbImage = thumbImage;
    self.fullImage = fullImage;
  }
  вернуть себя;
}

@конец
 

Вот и все — ваша модель данных готова! Пришло время создать образцы данных и отобразить их в виде таблицы.

Список ошибок другого типа

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

Для этого откройте Main.storyboard . Это позволяет вам визуально размещать различные «экраны» в вашем приложении. Как вы можете видеть, приложение в настоящее время настроено на наличие контроллера навигации (то, что позволяет легко переключаться между различными экранами), с корневым контроллером, главным экраном , и второстепенным контроллером в качестве экрана подробно . .

Выберите Master View Controller и в области выбора на левой панели выберите Table View .В инспекторе справа убедитесь, что для Content установлено значение Dynamic Prototypes .

Это то, что позволяет вам проектировать отдельную ячейку табличного представления так, как вам нравится в Storyboard Editor , и легко создавать экземпляры ячейки с помощью кода. Вам просто нужна базовая ячейка, поэтому убедитесь, что ячейка использует стиль Basic .

Выберите Table View Cell слева и в Attributes Inspector убедитесь, что Style установлен на Basic .Также установите для идентификатора MyBasicCell .

Для получения дополнительной информации о создании пользовательских ячеек ознакомьтесь с учебными материалами для начинающих раскадровок в iOS 5.

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

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

Добавьте следующую строку в RWTMasterViewController.h , между строками @interface и @end :

@property (strong) NSMutableArray * ошибки;
 

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

Теперь перейдите к RWTMasterViewController.m и внесите следующие изменения:

// Вверху файла
#import "RWTScaryBugDoc.h"
#import "RWTScaryBugData.час"

// После @implementation
@synthesize bugs = _bugs;

// В конце viewDidLoad
self.title = @ "Страшные ошибки";

// Замените оператор возврата в tableView: numberOfRowsInSection следующим:
return _bugs.count;

// Замените tableView: cellForRowAtIndexPath следующим
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath
{
  UITableViewCell * cell = [tableView
               dequeueReusableCellWithIdentifier: @ "MyBasicCell"];
  RWTScaryBugDoc * bug = [self.ошибки objectAtIndex: indexPath.row];
  cell.textLabel.text = bug.data.title;
  cell.imageView.image = bug.thumbImage;
  возвратная ячейка;
}
 

Хорошо, наконец-то есть что обсудить!

Во-первых, обратите внимание, что вы устанавливаете свойство с именем title на строку «Scary Bugs». title — это специальное встроенное свойство в контроллерах представления. Когда контроллер навигации отображает контроллер представления, он показывает все, что указано в свойстве title в строке заголовка.Итак, установив это, вы должны увидеть вверху «Scary Bugs»!

Затем при построении табличного представления с динамическими строками вы должны переопределить numberOfSectionsInTableView и numberOfRowsInSection , чтобы сообщить ОС, сколько разделов / строк должно отображаться в табличном представлении. У вас всего 1 раздел, поэтому вам не нужно ничего делать, потому что шаблон уже настроен для возврата 1 раздела. Для строк вы просто возвращаете количество объектов в массиве ошибок.

Наконец, вы реализуете tableView: cellForRowAtIndexPath , что, вероятно, является наиболее важным методом для реализации при создании табличного представления.Здесь вы настраиваете ячейку, которая будет отображаться для определенной строки. ОС будет вызывать этот метод один раз для каждой строки для каждой строки, чтобы вы могли его настроить.

Ознакомьтесь с этим методом подробно, поскольку это особенно важно:

- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath
{
  UITableViewCell * cell = [tableView
               dequeueReusableCellWithIdentifier: @ "MyBasicCell"];
  RWTScaryBugDoc * bug = [self.ошибки objectAtIndex: indexPath.row];
  cell.textLabel.text = bug.data.title;
  cell.imageView.image = bug.thumbImage;
  возвратная ячейка;
}
 

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

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

Вот что такое вызов dequeueReusableCellWithIdentifier . Если многоразовая ячейка недоступна, вы просто создаете новую ячейку на основе ячейки, которую вы настроили в Interface Builder (помните, как вы установили ее как базовую и назвали ее MyBasicCell ).

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

Если вам интересно, как выглядят различные стандартные параметры ячеек табличного представления, ознакомьтесь с разделом «Стандартные стили для ячеек табличного представления» в Руководстве по программированию табличного представления.

Наконец, вы настраиваете ячейку, задав для нее textLabel и imageView (которые доступны в стиле Basic ).

Хотите верьте, хотите нет, это все, что вам нужно сделать! Теперь вам просто нужно настроить некоторые образцы данных для отображения в виде таблицы.

Страшные изображения ошибок!

Но, конечно, для этого вам понадобятся страшные картинки с жуками! Вы можете либо поискать в Интернете, либо загрузить эти страшные изображения ошибок, которые я нашел на stock.xchng.

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

Затем откройте RWTAppDelegate.m и внесите следующие изменения:

// Вверху файла
#import "RWTMasterViewController.h"
#import "RWTScaryBugDoc.h"

// В начале приложения: didFinishLaunchingWithOptions
RWTScaryBugDoc * bug1 = [[RWTScaryBugDoc alloc] initWithTitle: @ Рейтинг "Potato Bug": 4 thumbImage: [UIImage imageNamed: @ "potatoBugThumb.jpg"] fullImage: [UIImage imageNamed: @ "potatoBug.jpg"]];
RWTScaryBugDoc * bug2 = [[RWTScaryBugDoc alloc] initWithTitle: @ "House Centipede" рейтинг: 3 thumbImage: [UIImage imageNamed: @ "centipedeThumb.jpg "] fullImage: [UIImage imageNamed: @" centipede.jpg "]];
RWTScaryBugDoc * bug3 = [[RWTScaryBugDoc alloc] initWithTitle: @ "Wolf Spider" рейтинг: 5 thumbImage: [UIImage imageNamed: @ "wolfSpiderThumb.jpg"] fullImage: [UIImage imageNamed: @ "wolfSpider.jpg"]];
RWTScaryBugDoc * bug4 = [[RWTScaryBugDoc alloc] initWithTitle: @ Рейтинг "Lady Bug": 1 thumbImage: [UIImage imageNamed: @ "ladybugThumb.jpg"] fullImage: [UIImage imageNamed: @ "ladybug.jpg"]];
NSMutableArray * bugs = [NSMutableArray arrayWithObjects: bug1, bug2, bug3, bug4, nil];

UINavigationController * navController = (UINavigationController *) self.window.rootViewController;
RWTMasterViewController * masterController = [navController.viewControllers objectAtIndex: 0];
masterController.bugs = ошибки;
 

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

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

И все! Компиляция и Запустите ваше приложение, и если все работает хорошо, вы должны увидеть список (в основном) пугающих ошибок в виде таблицы!

Куда идти дальше?

Вот пример проекта со всем кодом, который вы разработали в этой серии руководств по iOS.

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

Далее в серии руководств по iOS вы узнаете, как создать подробное представление об ошибках, чтобы вы могли редактировать и оценивать свои ошибки!

raywenderlich.com Еженедельно

Информационный бюллетень raywenderlich.com — это самый простой способ оставаться в курсе всего, что вам нужно знать как мобильному разработчику.

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

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *