Ростелеком

Как научиться делать приложения для iOS и macOS. Как создать успешное приложение для iOS

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

Язык программирования

Чтобы писать программы для определенной платформы, нужно использовать конкретный язык программирования. Разработка приложений для iOS и Android различается. Если у платформы от "Гугла" выбирать необходимо язык Java, то для iOS выбор стоит между Objective-C и Swift. Длительное время разработка под платформу iOS велась только при помощи языка программирования Objective-C. Несмотря на то что ему много лет, он все еще развивается и используется большим числом разработчиков. Но его минус - это высокий порог вхождения.

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

Что понадобится для начала

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

  • компьютер или ноутбук с операционной системой OSX на борту;
  • среду разработки Xcode, которая является бесплатной.

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

  • запускать разработанные программы не в симуляторе, а на настоящих устройствах;
  • размещать приложения в магазине App Store;
  • загружать новые версии среды разработки и iOS.

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

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

С чего начинается разработка приложений для iOS и Android? Обучение происходит на практике. Поэтому начинать надо с нее. Много теории - это не всегда хорошо. Ведь если человек прочтет от корки до корки десять он не станет. Нужно действовать.

Playground

Данная «песочница» - это замечательное окружение для изучения языка программирования. Как она выглядит? Пользователь вводит строчку программного кода и сразу же видит результат выполнения. После того как станет понятно, что написанный фрагмент работает так, как нужно, его можно просто перенести в проект. При помощи «песочницы» можно решить такие задачи, как:

  • освоение синтаксиса языка программирования;
  • улучшение навыков программирования при помощи экспериментов с новыми API;
  • осуществление простых арифметических вычислений;
  • разработка нового алгоритма и наблюдение за каждым его шагом.

Разработка приложений для iOS: с чего начать

Теория - это, конечно, хорошо, но, как говорилось ранее, нужна практика. Для того чтобы познакомиться с «песочницей», нужно запустить среду разработки Xcode. После запуска пользователь может видеть окно, в котором предлагается создать новый проект или же запустить Playground. Нужен второй пункт. Теперь необходимо придумать имя и сохранить «песочницу» в любое удобное место на компьютере. Кстати, разработка приложений для iOS на Windows тоже возможна, но тогда потребуется решить большое число проблем. Это и установка пиратской операционной системы, и правка важных файлов, и множество ошибок и вылетов.

После сохранения будет запущен тот самый Playground, который нужен.

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

Для начала можно попробовать написать следующее:

for var y = 0; y < 10; ++y {

println (“result: (z)”)

После этого «песочница» изменит свой вид. В столбце справа (панель результатов) показаны значения для каждой строки, которые получаются после выполнения. Также в правом столбце можно включить отображение временной панели, которая дает возможность проследить изменения во времени выбранного выражения. Здесь же отображается консольный вывод с текстом, который выводился бы программой.

Комментирование кода

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

Переменные

Итак, приложения пишутся на языке программирования. Базу любого языка составляют переменные. Разработка приложений для iOS и Android без использования переменных невозможна. Как понятно из названия, это контейнер, в котором содержится изменяемое значение. Каждая переменная должна обладать уникальным именем и может содержать в себе как числовые, так и текстовые значения. В языке программирования Swift переменные определяются при помощи слов var и let. Во втором случае переменная не может меняться и должна быть проинициализирована при объявлении. В первом случае переменная инициализируется непосредственно перед использованием.

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

Вывод результатов

Результат выполнения программы выводится в консоль. Что это такое? Это то, что обеспечивает взаимодействие пользователя с компьютером. Так, консолью вывода раньше называли монитор, а консолью ввода - клавиатуру. Сейчас значение терминов немного изменилось. Так называют программное окно, предназначенное для ввода и вывода команд. Разработка приложений для iOS нередко требует вывода каких-то данных. Для этого в языке Swift предусмотрены команды print и println. Первая отличается от второй тем, что автоматически начинается с новой строки.

Функции

Следующее базовое понятие в программировании - функции. Это некая последовательность действий, которые выполняют конкретную задачу. Каждая функция способна принимать какие-то значения, а также возвращать результат. Для использования этой конструкции ее необходимо сначала объявить при помощи ключевого слова func. После него указывается имя, а также круглые скобки. Если должно быть возвращено какое-либо значение, то после скобок указывается его тип. Если возвращаемого значения нет, то тип можно не указывать или же указать «пустой» тип - void. В круглых скобках находятся значения, которые функция принимает. Для вызова функции указывают ее имя и значения для аргументов.

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

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

Что теперь?

Итак, как видно из вышесказанного, разработка приложений для iOS своими руками вполне может оказаться по силам каждому. Главное - выучить основы языка программирования, познакомиться со средой разработки и очень много и часто практиковаться. Именно практика помогает добиться значительного прогресса. А ведь описанное здесь - это только начало. Дальше в мире программирования будет много интересного, сложного, увлекательного. Это поможет всегда держать мозг в тонусе, создавать что-то новое и неплохо зарабатывать. Ведь техника от Apple используется во всем мире. Поэтому ваше приложение смогут оценить миллионы людей.

Скачайте и установите Xcode. Xcode - это среда разработки, в которой создаются все приложения для iPhone. Xcode можно бесплатно получить от Apple, но данная программа требует установленной OS X версии 10.8 или более поздней. Не существует официального способа запустить Xcode на Windows или Linux. Это означает, что если вы хотите разрабатывать приложение на iPhone, но у вас нет Мака, то сначала вам придется купить его.

  • Чтобы разрабатывать приложения под iOS 8, вам понадобится Xcode 6.0.1 и iOS 8 SDK. И то, и другое можно получить от Apple. iOS 8 SDK содержит достаточно большое число новых API, которые позволят вам создавать все виды новых приложений, включая интеграцию с iCloud и Touch ID.
  • Чтобы разрабатывать приложения под iOS 10, вам понадобится iOS 10 SDK, доступный на сайте Apple. В языке программирования Swift и в SDK в этой версии Xcode произошли значительные изменения. Хорошая новость заключается в том, что после этой версии в Swift будет еще больше кодовых изменений.

Установите хороший текстовый редактор. Хотя вы можете все делать в Xcode, вы скоро поймете, что работать с кодом больших размеров гораздо проще, если у вас есть отдельный текстовый редактор, специализирующийся на программировании. Два самых популярных варианта - это TextMate и JEdit.

Установите векторную графическую программу. Если вы планируете создавать изображения и дизайны для своего приложения, вам понадобится программа создания векторной графики. Векторная графика может масштабироваться без потери качества, что важно для любого хорошо выглядящего приложения. Популярные векторные программы это CorelDraw, Adobe Illustrator, Xara Designer и Inkscape. Хорошая свободная программа редактирования графики это DrawBerry. Она не так мощна, как профессиональные программы, но хороша для начинающих, либо для тех, кто не хочет платить за что-то, что он будет использовать всего один раз.

Изучите Objective-C. Objective-C это язык программирования, который используется для создания функциональности в приложениях iPhone. Он обрабатывает данные и работает с объектами. Objective-C произошел из семейства языков C, и он является объектно-ориентированным языком. Если вы уже понимаете C или Java, вам будет достаточно просто изучить Objective-C.

  • Теперь можно использовать язык Swift, правопреемник Objective-C. У Swift более простой синтаксис и он более современен.
  • Хотя можно построить базовое приложение без знания Objective-C, но вы не сможете выполнить какие-нибудь расширенные функции без необходимости программирования. Без Objective-C все, что вы можете, - это двигаться взад и вперед по экранам.
  • В Интернете существует множество учебников, кроме того множество информации можно найти в различных книгах по Objective-C. Если вы хотите серьезно заняться разработкой приложений под iPhone, вам будут полезны некоторые из этих источников.
  • Некоторые из самых популярных онлайн-сообществ по Objective-C включают форумы разработчиков Apple, группа Google iPhoneSDK и StackOverflow.
  • Рассмотрите вариант аутсорсинговой разработки. Если у вас нет никакого желания изучать Objective-C, либо у вас нет художественной жилки, существует большое число фрилансеров и команд разработчиков, которые могут выполнить различные части проекта за вас. Аутсорсинг вашей разработки - сложный процесс, но он спасет вас от многих проблем, если вы не программист. Удостоверьтесь, что все, кто будет работать, заключат соглашение о неразглашении, и что вы договорились об оплате перед началом работы.

    • Upwork (объединение бывших oDesk и Elance) - самая популярная биржа фрилансеров в Интернете, где можно найти сотни разработчиков и художников любого уровня.
  • Создайте аккаунт разработчика. Чтобы распространять ваше приложение в App Store или дать его другим для тестирования, вам необходимо зарегистрироваться, чтобы получить аккаунт разработчика Apple. Аккаунт стоит $99 в год, и для его создания потребуется ввести информацию о налогах и банковскую информацию.

    • Вы можете создать ваш аккаунт на сайте iOS Dev Center.
  • Скачайте несколько тестовых приложений. Как только вы зарегистрировали аккаунт разработчика, у вас появляется доступ к ресурсам разработки Apple. Эти ресурсы включают множество проектов для примера, которые могут дать вам колоссальный объем информации о том, как разрабатываются приложения. Найдите пример, как-то связанный с тем типом приложения, который вы хотите создать, и попрактикуйтесь с ним в Xcode.

    Часть 2

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

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

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

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

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

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

    Часть 3

    Создание приложения
    1. Создайте новый проект в Xcode. Откройте Xcode и начните новый проект из меню Файл. Выберите "Application" (приложение) под заголовком "iOS" в левой части окна. В разделе шаблонов выберите "Empty Application" (пустое приложение).

      • Существует множество готовых шаблонов, и все созданы для различных задач. Начните с пустого шаблона, пока вы не разберетесь в процессе разработки. Вы сможете попробовать один из более сложных шаблонов, как только вы разберетесь, как тут все работает.
      • Вам необходимо указать имя продукта, идентификатор вашей компании и префикс класса. Если у вас еще нет идентификатора компании от Apple, введите com.example . В качестве префикса класса введите XYZ .
      • Выберите "iPhone" из меню устройств.
    2. Создайте Storyboard. Storyboard это визуальное представление всех экранов в вашем приложении. Он отображает содержимое каждого экрана, а также переходы между ними. Инструмент Storyboard поможет вам в разработке вашего приложения.

      • Выберите File → New → File.
      • Под заголовком iOS выберите "User Interface" (интерфейс пользователя).
      • Выберите Storyboard и нажмите Далее.
      • Выберите iPhone из меню устройств, и затем назовите файл "Main". Удостоверьтесь, что вы сохранили его там же, где и ваш проект.
    3. Назначьте Storyboard вашему проекту. Как только вы создали Storyboard, вам нужно назначить его как основной интерфейс вашего приложения. Тогда данный Storyboard будет загружен при запуске приложения. Если вы не назначите storyboard, при старте приложения ничего не произойдет.

      • Нажмите на имя вашего проекта в дереве навигации слева.
      • Найдите заголовок Targets (цели) в основном окне. Выберите ваш проект из списка Targets.
      • Найдите раздел Deployment Info (информация о развертывании) во вкладке General (общее).
      • Введите Main.storyboard в текстовое поле "Main Interface" (основной интерфейс).
    4. Добавьте свой первый экран, используя контроллер вида. Контроллеры вида определяют, как содержимое будет просматриваться пользователем. Существует множество заранее созданных контроллеров вида, включая стандартные виды и таблицы. Вы будете добавлять контроллеры вида к вашей storyboard, что скажет вашему приложению, как нужно отображать содержимое пользователю.

      • Выберите ваш файл "Main.storyboard" в меню навигации по проекту. Вы увидите, что в окне Interface Builder (построитель интерфейса) появится пустой холст.
      • Найдите Object Library (библиотеку объектов). Она расположена внизу правой части, и ее можно выбрать, нажав на кнопку с маленьким кубом. При этом загрузится список объектов, которые можно добавить на ваш холст.
      • Нажмите и потяните объект "View Controller" (контроллер вида) на ваш холст. На вашем холсте появится первый экран.
      • Ваша первая "Сцена" закончена. При запуске приложения контроллер вида загрузит ваш первый экран.
    5. Добавьте объекты интерфейса на ваш первый экран. Как только вы определили контроллер вида, вы можете начать размещать на экране необходимые вам объекты интерфейса, такие как метки, текстовые поля ввода и кнопки. Все объекты интерфейса можно найти в списке Objects Library (библиотеки объектов), которую можно найти внутри объекта View Controller (контроллер вида).

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

      • Выберите объект, который хотите изменить, и нажмите на кнопку "Attributes Inspector" (инспектор атрибутов) вверху правой части. Кнопка немного похожа на щит.
      • Измените объект так, как вам нравится. Вы можете изменить стиль шрифта, размер шрифта, цвет текста, выравнивание, фоновые изображения, замещающий текст, стиль границы, и многое другое.
      • Существующие опции будут изменяться, в зависимости от того, какой объект вы изменяете.
    7. Добавьте еще экранов. По мере того, как ваш проект разрастается, скорее всего вы захотите добавить еще экранов, чтобы отобразить все необходимое для приложения содержимое. Например, если вы делаете приложение со списком дел, вам понадобится по меньшей мере два экрана: один для ввода дела, а второй для просмотра списка.

      • Дополнительные экраны можно добавить, переместив и отпустив контроллер вида на пустую часть холста. Если вы не можете найти пустого участка, чтобы отпустить мышь, нажмите на кнопку "zoom out" (уменьшить масштаб), пока пустые области не появятся. Удостоверьтесь, что вы опустили контроллер вида на холст, а не на существующий экран.
      • Вы можете изменить начальный экран, выбрав контроллер вида, который необходимо сделать ведущим в окне проекта. Нажмите кнопку Attribute Inspector (инспектор атрибутов) и отметьте галочку "Is Initial View Controller" (ведущий контроллер вида). Например, если вы делаете список дел, вы захотите, чтобы сам список был первым, что увидит пользователь при запуске приложения.
    8. Добавьте панель навигации. Теперь у вас есть два экрана в приложении, и пришло время сделать так, чтобы пользователь мог перемещаться между ними взад и вперед. Вы можете этого достичь с использованием Navigation Controller (контроллер навигации), который является специализированной версией View Controller (контроллер вида). Данный контроллер добавляет панель навигации в верхнюю часть вашего приложения, и позволяет пользователю перемещаться взад и вперед между экранами.

      • Контроллер навигации должен быть добавлен к вашему начальному виду, чтобы он мог контролировать все последующие экраны.
      • Выберите начальный вид в окне проекта.
      • Выберите Editor → Embed In → Navigation Controller.
      • Вы должны увидеть, что вверху экрана, на который вы добавили контроллер, появилась серая панель навигации.
    9. Добавьте функциональности данной панели навигации. Теперь, когда вы вставили панель навигации, вы можете начать добавлять к ней инструменты навигации. Это позволит пользователю перемещаться между экранами взад и вперед.

      • Добавьте к панели навигации заголовок. Нажмите на Navigation Item под контроллером вида, к которому вы его назначили. Откройте Attribute Inspector (инспектор атрибутов) и введите заголовок текущего экрана в поле Title.
      • Добавьте кнопку навигации. Откройте Objects library (библиотеку объектов), если она еще не открыта, и найдите там Bar Button. Выберите ее, и перенесите на панель навигации. Обычно кнопки, которые передвигают вас "вперед" по приложению, размещаются справа, а кнопки, перемещающие вас "назад" - слева.
      • Дайте кнопкам свойства. Кнопки можно настроить с помощью специальных свойств, которые позволяют им легко адаптироваться к различным условиям. Например, если вы создаете список дел, вам может понадобиться кнопка "Добавить", чтобы создать новую запись. Выберите кнопку и откройте Attribute Inspector (инспектор атрибутов). Найдите меню Identifier (идентификатор) и выберите "Добавить". Кнопка изменится на логотип "+".
    10. Свяжите вашу новую кнопку с существующим экраном. Чтобы ваша кнопка функционировала, вам нужно соединить ее с другим экраном. В нашем примере со списком дел, кнопка будет располагаться в общем списке, и ее нужно связать с экраном ввода дела. Чтобы связать кнопку, зажмите кнопку Control , и перетащите кнопку на второй экран.

      • Когда вы отпускаете кнопку мыши, появится меню Action Segue со списком опций. Выберите "Push", чтобы использовать перемещение между экранами. Вы также можете выбрать "Modal", что откроет экран как полностью самостоятельный, без последовательности экранов.
      • Если вы используете Push, на ваш второй экран автоматически будет добавлена панель навигации, а также кнопка "назад". Если вы выберете modal, вам нужно будет вручную вставить вторую панель навигации, а также добавить кнопки "Отмена" и "Готово" (в приложении со списком дел; в вашем приложении будут другие кнопки, в зависимости от нужд вашего приложения).
      • Кнопки "Отмена" и "Готово" можно создать тем же способом, которым вы создали кнопку "Добавить". Просто выберите "Отмена" и "Готово" из меню Identifier в Attribute Inspector.
    11. Используйте возможности обработки данных. До этого момента можно было создать базовый интерфейс без необходимости писать код. Если вы хотите добавить более глубокую функциональность, такую как хранение данных, обработку ввода пользователя, вам нужно погрузиться в написание кода. Написание кода находится за рамками данной статьи, но в Интернете существует большое число учебников по Objective-C.

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

    Часть 4

    Тестирование приложения
    1. Запустите iOS Simulator. XCode поставляется со встроенным эмулятором iOS, который позволяет вам протестировать свое приложение на некотором наборе эмулируемых устройств с iOS. Чтобы запустить эмулятор, выберите из меню в верхней части окна XCode пункт "Simulator и Debug", а затем выберите устройство, на котором вы хотите протестировать.

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

      Проверьте приложение на своем собственном iPhone. Перед распространением своего приложения для тестирования вы можете протестировать его на своем собственном устройстве (если у вас оно есть). Сначала подключите устройство к компьютеру по USB. Если откроется iTunes, закройте его. Выберите из выпадающего списка "Device and Debug", а затем нажмите на кнопку Build. После нескольких секунд приложение должно запуститься на iPhone. Проверьте всю функциональность, прежде чем закрыть приложение.

      Займитесь отладкой. Если приложение "упало", нужно определить, что случилось и почему. Причин может быть бесконечно много. Открывайте отладочную консоль и читайте сообщения об ошибках. Чаще всего они будут не особо понятными. Если вы не поняли ошибку, попытайтесь поискать сообщения об ошибках в Google. Существует вероятность, что вы сможете наткнуться на сообщение, оставленное на форуме разработчиков Apple, где какой-либо разработчик уже ответил на вопрос.

      • Отладка приложения - это долгий и нудный процесс. Если вы не сдадитесь и упорно будете продолжать, со временем у вас будет получаться все лучше. Вы начнете распознавать ошибки, быстро их находить и даже иногда их ожидать. Частая ошибка состоит в освобождении памяти объекта более одного раза. Другая частая ошибка - если вы забудете выделить память и инициализировать объект перед тем, как попытаетесь что-то к нему добавить или присвоить. С каждым приложением у вас будет становиться все меньше и меньше ошибок.
    2. Проверьте использование памяти. В iPhone памяти немного. Каждый раз, выделив память для объекта, ее нужно будет освобождать по завершению работы с ним. Существуют такие инструменты, как iPhone SDK, который среди прочего может применяться для просмотра и анализа использования памяти.

      • С выбранным Device and Debug, выберите Run → Run with Performance Tool → Leaks. Это запустит Инструменты и, вместе с этим, приложение на вашем устройстве. Теперь начните пользоваться приложением так, как пользуетесь обычно. Временами оно будет немного подтормаживать, так как программа записывает и анализирует использование памяти. Все источники утечек будут отображаться в нижней части экрана.
      • Двойное нажатие на каком-либо объекте откроет вам соответствующий код, а нажатие по маленькой стрелочке в столбце Адрес откроет историю проблемы с памятью. Иногда место, где обнаружена утечка, - это совсем не то место, откуда она пошла.
      • Если вы в тупике, попробуйте действовать методом исключения. Закомментируйте что-нибудь, осторожно пропустив некоторую область кода, а затем запустите его. Иногда вы сможете сузить область поиска, и затем, возможно, найти нужную строку. Когда вы знаете, где находится ошибка, вы можете ее исправить или переписать. Помните, использование Google может дать вам прямые ссылки на форумы Apple или на документацию, описывающую ваш случай.
    3. Заполните форму с описанием приложения, ключевыми словами, сайтом поддержки, категорией, адресом электронной почты для контактов, авторскими правами, и т.д.
    4. Заполните формы Права и Цены.
    5. Ваши картинки в iTunes должны быть готовы. Вам понадобится большая иконка 512х512, а также несколько скриншотов вашего приложения. Скриншоты можно получить из симулятора iPhone, используя ⌘ Command + ⇧ Shift + 4 , и перетаскиванием. Проверьте, что они размером 320х480 для iPhone. Скриншоты это очень важная часть маркетинга вашего приложения, так что удостоверьтесь, что они отображают самые важные части.
  • Загрузите свое приложение. Нажмите на "Ready to Upload Binary", и вы перейдете на экран, в котором вам предложат загрузить Application Uploader tool. Скачайте его и нажмите Готово.

    • Установите Application Uploader tool и запустите его. В первый раз он попросит вас ввести ваши авторизационные данные iTunes.
    • Application Uploader tool проверит ваш аккаунт iTunes Connect, и найдет все приложения, для которых можно загрузить бинарный файл. Выберите необходимое, выберите zip-файл, который вы создали ранее, и загрузите его. Загрузчик проверит некоторые свои вещи, и укажет на ошибки, если найдет что-то неверное. Это может быть номер версии, отсутствующие иконки, и т.д. Если все замечательно, загрузите zip и все будет окончено.
  • Ждите проверки. Вам нечего делать, кроме как ожидать окончания процесса проверки. Apple уведомит вас через несколько дней или недель по электронной почте, если состояние вашего приложения сменится на "In review" (проверяется). Когда приложение переходит в данную стадию, дальнейшее происходит очень быстро. Если приложение не пройдет через начальный набор тестов, вы в тот же день получите электронное письмо с отказом, рассказывающим, почему приложение отвергли. Также, в письме будут рекомендации Apple по его починке. Если ваше приложение прошло проверку, Apple пошлет вам электронное письмо, сообщающее о том, что ваше приложение готово к продаже. Теперь ваше приложение появится в магазине приложений iTunes.

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

  • Если вы любите бумажные книги, зайдите на Amazon.com, чтобы найти книги о разработке на iPhone.
  • Предупреждения

    • iPhone SDK постоянно меняется, и устройства тоже. Если произошло обновление SDK во время работы над проектом, прочитайте, что появилось нового перед тем, как использовать новый SDK. На данном этапе этого делать не обязательно, если только Apple не сказала, что все новые загрузки должны быть скомпилированы новой версией SDK. Если вы обновитесь, некоторые используемые вами методы могут стать устаревшими. Хотя, скорее всего, это приведет максимум к предупреждению во время компиляции, лучше перестраховаться.
    • Когда вы достигнете успеха и ваше приложение появится в App Store, не злитесь на тех, кто оставит вашему приложению плохой отзыв. Некоторые оставляют полезные отзывы, а некоторым просто нравится быть грубыми.
    • Никто не гарантирует вам большого количества загрузок или продаж, но не стоит расстраиваться.
    • Разработка приложений - штука увлекательная; вы не сможете остановиться.
    Все началось с того, что я огляделся по сторонам и, не увидев автомобиля своей мечты, решил сконструировать его сам
    Фердинанд Порше

    Привет, Хабр. Хочу рассказать, как создал свое первое iOS приложение и что из этого получилось.

    Идея

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

    Поэтому, поставив все ставки на простоту и удобство, я приступил к созданию концепции. Модель приложения с единым списком заметок. Все в одном месте, что может быть проще? Если что–то имеет большую ценность или актуальность, совсем не обязательно вешать на него ярлык, ведь достаточно просто переместить более важную заметку в топ списка. Старые и ненужные записи постепенно будут опускаться вниз и в последствии будут удалены пользователем.

    Функционал

    После того, как концепция была придумана, я выписал основной функционал - те вещи, на которые я хотел бы сделать акцент в управлении:

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

    Инструментарий

    Перед тем, как писать код в Xcode, я полностью воссоздал внешний вид приложения в векторном редакторе Sketch. Эта программа отлично подходит для быстрого создания макетов. Для этого приложения доступна масса плагинов, среди них есть Sketch Preview - просмотр артборда сразу на устройстве через программу Skala Preview. Всего лишь нужно скачать бесплатные программы Skala Preview на компьютер и мобильное устройство и установить плагин. После этого выбрать нужный артборд, нажать комбинацию Command+P и уже через секунду внешний вид приложения транслируется на устройство.

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

    Разработка

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

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

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

    Анимации удаление и перемещения в топ я решил реализовать самостоятельно, а визуальное сопровождение максимально приблизить к реальной жизни. Что-то приобрело более высокий приоритет - свайп вправо и заметка перемещается в топ списка. Чтобы удалить - свайп влево и анимация зачеркивания покажет на сколько еще нужно продлить свайп чтоб завершить удаление. При случайном удалении - нужно просто потрясти устройство («Shake»), и заметка вернется на свое прежнее место.

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

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

    Нейминг

    Название приложения - самая важная часть при разработке, это первое что видит пользователь в магазине. На хабре есть по этому поводу. К подбору имени я решил подойти основательно: для начала я перебрал список 1000 самых популярных слов в английском языке и выписал всевозможные комбинации, которые подходили бы для названия мобильного приложения для заметок, к тому же хотелось уложиться в 8-10 символов. Но при этом не хотелось выбирать название SuperNotes или NotesPlus etc, хотелось чего-то нового. Мне понравилось сочетание mad note , на которое случайно наткнулся в Urban Dictionary:
    mad note - excellent, entertaining, surprising, unexpected or awe-inspiring

    Сразу же появился и слоган: MadNotes - Note your passion. Поскольку палитра основных цветов у меня уже была готова (белый, синий, красный), я решил сразу придумать подходящую иконку. Ситуация с логотипами для приложений подобного рода плачевная:

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

    Результат

    Поскольку изначально проект задумывался как дизайнерский, я решил поучаствовать с моим приложением в всеукраинском конкурсе Ukrainian Design Awards: The Very Best Of в категории Digital Design. До конкурса оставалось несколько недель, за это время я успел сделать публикацию на Behance, где визуально показал все основные функции приложения, а также записал видео-превью.
    Поскольку победителей конкурса не разглашают до самого последнего момента, было невероятно приятно увидеть свою работу на выставке работ победителей - жюри увидели и оценили главную концепцию - минималистичное и, вместе с тем, функциональное приложение для ведения заметок.


    Приложение находится в AppStore уже несколько месяцев, за это время я сделал шесть обновлений и переписал код на Swift. В последней версии (1.2) добавлена синхронизация с iCloud, так что заметки уже успели перебраться в облако.

    Спасибо внимание.
    Note your passion

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

    Идея и консультация

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

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

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

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

    Приступаем к работе!

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

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

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

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

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


    * продукт оунер – руководитель проекта


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


    **бэклог – список задач для команды разработчиков, которые полностью описывают проект


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

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

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

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

    Сердцем Scrum* является Спринт** длительностью в одну или две недели, в течение которых создается потенциально готовая к выпуску и использованию часть продукта.


    *Scrum – гибкая методология создания, по который мы ведем проекты

    ** Спринт-этап в рамках которого реализуется определенная часть проекта


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

    Спринт состоит из списка того, какие функции нужно разработать и гибкого плана, служащего ориентиром в работе по проекту. Ресурсом для планирования спринта является Бэклог Продукта.

    Объем работ на предстоящий Спринт определяется во время планирования Спринта в ходе совместной работы всей команды.

    При планировании Спринта команда отвечает на следующие вопросы.

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

    В сегменте мобильных технологий, без сомнения, лидирует 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. Поэтому тебе неплохо знать оба.

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

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

    Как ты знаешь, главный инструмент разработчика под 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 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 занимает не один объемистый томик. Поэтому, чтобы получить объективные знания, удобно пройти курс « ». Целый раздел курса посвящен этому языку.

    Разработка приложения для 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, по нему ты будешь обращаться к визуальному компоненту, пускай будет 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, используемый для разработки мощных и безопасных приложений для «яблочной» экосистемы.

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

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


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

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