iOS-розробка для початківців: вчимося створювати додатки для iOS з нуля

  1. «Яблучна» екосистема
  2. необхідні знання
  3. Інструменти для розробки
  4. Мова Objective-C
  5. Розробка програми для iOS
  6. типи додатків
  7. Створюємо зв'язок між графічними елементами і кодом
  8. Мова Swift
  9. App Store
  10. Підсумки

Професія програміста - одна з найпрестижніших і затребуваних, це факт. В галузі розробки програмного забезпечення є свої ніші. З них найбільша швидко розвивається, а разом з тим найбільш високооплачувана - це розробка ПО для мобільних пристроїв. Як тобі відомо, так уже склалося, що, залишивши конкурентів далеко позаду, вперед вирвалися три постійних суперника. Фішка лягла таким чином, що хтось із цих трьох беззаперечний лідер, хтось завжди наздоганяє.

У сегменті мобільних технологій, без сумніву, лідирує 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'а

Це властивість об'єкта, яке посилається на інший об'єкт (в даному випадку візуальний компонент). Тобі треба ввести ім'я об'єкта 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.

Після цього вектор вивчення перейде в сторону Apple-систем: два докладних курсу мови Objective-C і корисний курс по Swift

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

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

Спеціальний проект з компанією GeekBrains