Путь iOS-разработчика: с чего начать и как преуспеть в профессии
iOS-разработчик создаёт приложения для устройств, входящих в экосистему Apple. Сюда входит разработка и сопровождение приложений для iPhone, iPad, Apple TV, Apple Watch.
По словам гендиректора Apple Тима Кука, на начало 2022 года число активных устройств «яблочной компании» в мире достигло 1,8 млрд. В следующем году ожидается, что их число превысит 2 млрд. Спрос на продукцию Apple огромный, следовательно профессия iOS-разработчика будет востребована ещё много лет.
По данным исследования Kolesa Group, средняя заработная плата разработчика в Казахстане в 2021 году выросла на 49% по сравнению с 2020. И именно mobile-разработчики больше всех довольны уровнем своих зарплат. К тому же это самое молодое направление в программировании: специалистов 18–20 лет больше всего среди «мобильщиков» — 16%.
Профессию iOS-разработчика в 4 эпизоде 4 сезона «Код и Кофе» обсудили:
• Константин Строев — тимлид мобильной разработки Krisha.kz (Kolesa Group);
• Беназир Толеубекова — iOS-разработчик, технический ментор GoViral Central Asia и сертифицированный тренер Apple.
Беназир Толеубекова: Сейчас я много занимаюсь алгоритмами, структурами данных. Даже оформила подписку на LeetCode. Здесь, чтобы порешать задачи, эти дисциплины понадобятся. Но углубленное знание физики и математики больше пригодится для подготовки к собеседованиям в MAMAA [Meta, Apple, Microsoft, Amazon, Alphabet, бывш. FAANG — Прим. ред.]. Умение решать такие задачи — часть их интервью.
Константин Строев: Мы высокоуровневые разработчики, SDK снимает много наших вопросов. Например, Quicksort, который мы изучаем на этих самых курсах по алгоритмам и структурам данных, преобразуются просто в «вызов функции sort». Т.е. по большому счёту, на нашем уровне, углубленное знание физики и математики не нужно. Но важны логика и мышление, которые нарабатываются благодаря этим дисциплинам. «Трушный» разработчик должен знать, как устроен фундамент и хорошо рассуждать. На собеседованиях мы стараемся разузнать, насколько хорошо кандидат всё это понимает.
Беназир Толеубекова: Моим экзаменатором на сертификации Apple был Мэтт Ханлон — разработчик iBooks и iPhoto. Я спросила у него совета, подучить Objective-C или развиваться дальше по Swift? Он порекомендовал мне продолжить изучение Swift. Аргументировал это тем, что Objective-C с годами отойдёт на задний план, а Swift упрочит лидерство — Apple делает всё для этого.
Константин Строев: Objective-C, Swift, Kotlin — это всё оболочка вокруг понимания разработки. Знание общего синтаксиса Objective-C нужно для понимания работы внешних SDK и оперирования всем этим инструментарием. Это будет плюсом для любого iOS-разработчика.
Об интересных историях прихода в iOS-разработку, выборе первой работы, трендах профессии и о многом другом можете узнать в полной версии подкаста по ссылке.
iOS-разработчик: Важные качества программиста.
Рынок iOS разработки сейчас быстро растет. Все больше компаний создают собственные приложения для бизнеса. При этом рынок не перенасыщен специалистами (на одну вакансию два человека) из-за высокого порога входа в профессию. Но тем не менее найти хорошего разработчика не всегда легко. Поэтому компании часто тратят месяцы на поиск разработчиков или готовы брать перспективных новичков даже без большого опыта. При этом внимательно смотрят, какими инструментами кандидат владеет и может ли писать лаконичный код.
Кто такой iOS-разработчик?
Разработчик приложений для iOS — это программист, который пишет back end для сервисов компании Apple. iOS — это операционная система для планшетных компьютеров и мобильных устройств, таких как iPhone, iPad, iPod, Apple TV, Apple Watch. Основы мобильной разработки не отличается от обычной, но из-за специфических инструментов ее выделили в отдельное направление.
Для работы с iOS нужен макбук, потому что только на нем есть необходимая среда разработки Xcode. Она бесплатна и распространяется через магазин приложений AppStore. Для установки надо иметь своей Apple ID и больше ничего. В Xcode можно разработать приложения для чего угодно — телефона, планшета, часов.
Главное отличие от других мобильных операционных систем в том, что ее возможно установить только на продукты Apple. Однако, система довольно удобна в пользовании, и имеет ряд достоинств:
- Быстрая загрузка
- Понятный интерфейс
- Удобная файловая система (За пару кликов вы окажетесь на нужном месте)
- Регулярно обновляемая система
- Хорошая защита от вирусов и можно еще много перечислять, но пора двигаться дальше.
Язык программирования Swift
Почти вся iOS-разработка ведется при помощи языка программирования Swift. На нем разрабатываются все новые проекты. Swift считается очень простым и дружелюбным языком для новичков. Он появился 6 лет назад и постепенно вытесняет более старый язык Objective-C, который использовался компанией Apple более 30 лет для написания приложений. Оба языка во многом взаимозаменяемые и взаимно дополняемые. Ниже приведена средняя зарплата iOS-разработчика.
По данным калькулятора зарплат «Моего круга» средняя зарплата iOS-разработчика составляет около 140 000 рублей в месяц.
7 Важных качеств программиста
Итак, какими же качествами должен обладать программист, чтобы быть востребованным в этой нише:
Решение задач. Программирование — это постоянное создание нового. Здесь важно не бояться трудностей и не ждать готовые ответы. Хороший разработчик отличается умением решать задачи и не сдаваться.
Хорошая концентрация. Люди, обладающие усидчивостью при детальной работе, аналитическим складом ума и имеющие алгоритмизированный подход —
смогут разобраться с любой сложной задачей.
Находить суть. Создание кода — это лишь часть работы программиста. Когда программное обеспечение не работает, как ожидалось, программист должен быстро и эффективно добраться до корня проблемы.
Уметь презентовать. В карьере программиста недостаточно писать качественный код, чтобы действительно преуспеть, нужно развивать лидерские качества, общаться с людьми и делиться своими идеями.
Умение работать в команде. В продолжение прошлого пункта, хотим напомнить, что программист редко работает в одиночку, даже если он единственный разработчик в компании. Здесь ценится умение работать с другими программистами, отделом маркетинга, продаж и так далее.
Соблюдение сроков. Большинство программистов работает над проектами с указанием сроков. Проявляйте уважение к дедлайнам «вписывайтесь» в назначенные сроки. Это важно в любом деле!
Непрерывное обучение — это самый главный навык! Оставайтесь открытыми к новому и будьте готовы учиться, чтобы стать профессионалом и получать хороший доход. Технологии постоянно развиваются и сегодняшние навыки и способности программиста могут устареть уже в течение нескольких лет. Наблюдайте за последними тенденциями и постоянно занимайтесь самообразованием.
Бонус! Требования компаний к iOS разработчикам.
Сложности бывают в любом деле, особенно на старте. Поэтому не опускайте руки, когда что-то не получается. И никогда не думайте, что уже знаете все: постоянно продолжайте учиться и развиваться. Ниже мы опишем стандартные требования компаний к Junior-разработчикам на iOS:
- Xcode & Interface Builder
- CocoaTouch
- Использование CocoaPods
- Понимание MVC
- Push Notifications
- UIKit
- CoreData
- Опыт работы с библиотеками AFNetworking, Alamofire, RestKit
- Auto Layout
- Debugging в Xcode
- In-App Purchase
Не переживайте, если вы не использовали какие-то инструменты из этого списка, вы можете быть приняты на работу, но есть знания, без которых никуда. Если вы решили стать iOS-разработчиком, приглашаем вас на курс SWIFT, где студенты за 12 месяцев с нуля и получают практические навыки, работая над реальными проектами. Для обучения нужны макбук и айфон.
Кто такой iOS Developer. Как украинский разработчик на фрилансе создавал клоны приложений Instagram, ТікТок, Telegram
Специалист по мобильной разработке для Apple, Ярослав Вишняк имеет более 5 лет коммерческого опыта в профессии. Он работал в шведской компании Beetroot, стартапе OneSurgery, украинском стартапе AgroOnline и одного из крупнейших в мире гемблинговых брендов 888Holdings.
Сейчас, в продолжении серии материалов о профессиях в IT, Ярослав рассказал dev.ua о навыках, круге обязанностей, уровне зарплат и других подробностях о iOS разработчике.
Специалист по мобильной разработке для Apple, Ярослав Вишняк имеет более 5 лет коммерческого опыта в профессии. Он работал в шведской компании Beetroot, стартапе OneSurgery, украинском стартапе AgroOnline и одного из крупнейших в мире гемблинговых брендов 888Holdings.
Сейчас, в продолжении серии материалов о профессиях в IT, Ярослав рассказал dev.ua о навыках, круге обязанностей, уровне зарплат и других подробностях о iOS разработчике.
На пути к разработчику iOS
Ярослав окончил Киевский национальный торгово-экономический университет по специальности Магистр инженерии программного обеспечения.
Он начал изучать Swift сам, будучи студентом, через бесплатные источники. Хотя сначала в университете он начал с C++ и Java и намеревался заходить в разработку Android. Но, после знакомства со Swift, обратил свое внимание в разработку iOS.
«Не помню, чтобы тогда были какие-то хорошие упорядоченные курсы по Swift, поскольку она не так давно появилась», — вспоминает Ярослав.
По словам Вишняка, на тот момент iOS разработка не была прямой супер распространенной, а порог входа был высок, потому что нужно было иметь тот же MacOS, как среда.
Учебные материалы преподавали преимущественно энтузиасты, желавшие поделиться новым крутым языком и фишками среды и платформ Apple, но они были преимущественно англоязычные.
По пути в профессии Ярослав рассказывает, что сталкивался со многими интересными ситуациями. В основном они касались заказчиков на фрилансе, которые постепенно меняли ТС, чтобы создать клон популярных продуктов типа Instagram, ТикТок, Telegram и других.
«Это странная ситуация, когда ты начинаешь делать вроде бы оригинальный продукт, а впоследствии оказывается, что нужна просто копия уже существующего популярного приложения, иногда даже к дизайну», — объясняет разработчик.
По его словам, были также люди, которые регулярно писали с идеями точно выстреленных стартапов и предлагали бесплатно сделать свою работу. Кроме того, он сталкивался с серьезными техническими задачами, которые решали очень необычными способами, а один из таких привел к его звонку компании уже с готовым решением по сколько они могут его приобрести.
Что такое iOS-разработка
Индустрия мобильных приложений растет и развивается назад. Никто не хочет заказывать еду или курьерские услуги с сайта. Все это, а также пользоваться умным домом и смотреть в дополненной реальности новую квартиру и многие другие хотят это делать с помощью собственного смартфона. Кроме того, даже государственные органы тоже заказывают разработки мобильных приложений, которые сейчас хорошо функционируют, например, «Дія» или «Киев Цифровой».
«То есть постоянно появляются новые сценарии и есть новая интересная работа», — говорит Ярослав.
iOS Разработка — это разработка программного обеспечения для iOS, iPadOS, WatchOS. Основным инструментом сейчас является язык программирования Swift, представленный в 2014 году на смену Objective-C. Это также C подобный, открытый, мультипарадигмальный компилируемый язык. Кроме того, она может использоваться для разработки под macOS, tvOS и серверной логики.
Различия веб и мобильной разработки
Хотя в большинстве случаев и там, и там делается контент для какой-то серверной логики, но есть ряд отличий. Для сайта акцент делается на то, чтобы презентовать компанию или ассортимент ее продукции, а когда речь идет о разработке мобильного приложения, то здесь в первую очередь акцент стоит на том, как пользователь будет им пользоваться.
По словам Ярослава, это дает толчок для разработчика думать, а какой функционал будет более целесообразен, как пользователь будет реагировать на ту или иную последовательность вложений и размещение меню, цвета. Кроме того важно, что пользователю показать в первую очередь, а что во вторую, ввиду того, что место на экране ограничено и есть технические ограничения девайса или отсутствие отдельных прав. А также, как говорит Ярослав, заказчик со своей стороны очень часто хочет внедрить новые технологии типа дополненной реальности. В той же веб-разработке это происходит куда реже.
«А давайте мы сюда засунем какое-нибудь машинное обучение, и сделаем как-то фишку», — объясняет он.
Преимущества именно мобильной разработки — это возможность поработать с новейшими крутыми технологиями типа ML, AR, разных умных домов, технологиями позиционирования и т. д.
Кто такой iOS-разработчик
Как отмечает Ярослав Вишняк, хороший мобильный IOS разработчик — это визионер, который скажет заказчику или тем-лиду: «Смотрите, эта фишка здесь не нужна — она все сломает, а нужно сделать так и так, но это будет работать и у меня есть несколько вариантов как это может работать».
iOS разработчиком, мобильным разработчиком, может быть человек, использующий Swift для написания программного приложения. Кроме того, есть языки, вроде Java and React Native и Dart, которые пишут таким образом сразу под две платформы под Android, и под iOS, а также кроссплатформенные решения Xamarin и другие.
Также сейчас есть разные кроссплатформенные подходы, например, Zero-code, когда из шаблонов можно сделать приложение, но Ярослав не сталкивался, чтобы кому-то на рынке был нужен такой специалист.
Обязанности разработчика iOS
iOS разработчик может иметь разный пул обязанностей в зависимости от типа проекта. Где-то это разработка приложения в рамках методологии. Иногда разработчик мобильных приложений занимается и мануальным тестированием своего продукта. Бывает, что нужно помогать в разработке ТС для UI дизайнеров и разработчиков API для вашего приложения. Также могут потребоваться навыки прототипирования и навыки создания UI по гайдлайнам.
Что должен знать iOS-разработчик
Базово мобильный разработчик должен знать Swift или Objective-C. Будет плюсом знать SwiftUI, потому что некоторые фреймворки уже работают в декларативной парадигме. Базовый инструментарий нужно знать, например UIKit, содержащий основные компоненты пользовательского интерфейса. Также уметь использовать среду разработки и инструменты тестирования, например симулятор.
iOS Trainee.
Должен иметь навыки, которые указывал выше. И хорошие навыки коммуникации/поиска информации, чтобы развиваться дальше.
iOS Junior developer
К навыкам Trainee должно добавить понимание того, как работает приложение, как строится архитектура. Должен уже уметь писать запросы на сервер и подключать сторонние библиотеки, пользоваться сторонними сервисами для мониторинга. Должен иметь навыки работы с БД.
Middle iOS developer
Ко всем предварительным требованиям прилагается способность полностью написать приложение с нуля. Понимать, что такое UI и Unit тесты, уметь применять их. Знать больше одной архитектуры и засовывать по ситуации более целесообразную. Также иметь навыки для оценки рисков и возможной затраты времени. Будет плюсом умения общаться с посторонними разработчиками, чтобы адаптировать библиотеки под свои нужды. Должен работать в методологии.
Senior iOS developer
Уже должен спланировать полностью разработку приложения, включая CI/CD. Также должен уметь менеджерить не только свои задачи, но и смежные. Контролировать качество кода, понимать разные подходы к прототипированию архитектуры. Должно быть понимание о мобильной безопасности и ее стандартах. Также Senior должен иметь представление о работе системы и приложений на уровне работы с железом, менеджменте памяти, знать нюансы системы и инструментария.
Бонус-плюс для всех
К этому, конечно же, прилагается и знание английского, который понадобится с самого старта карьеры. И очень хорошим плюсом будут академические знания о строительстве и работе компьютерной техники. Ценный специалист будет постоянно актуализировать знания, поскольку постоянно эволюционирует Swift, iOS и SDK. К примеру, не так давно появился SwiftUI, который конечно надо учить.
iOS developer Зарплаты
Средний уровень оплаты, на который может претендовать iOS разработчик находится в пределах согласно уровню специалиста:
- Trainee — $300–700.
- Junior $700–1500.
- В среднем $1500–3000.
- Senior $3000–6000 (на самом деле верхней планки нет, но обычно это до $6000).
Как говорит Ярослав, специалист, специализировавшийся на кроссплатформенных языках программирования, и производящие проекты и для Android, и под iOS, мог претендовать на большую зарплату. Так вообще человек получал больше, а компании тратили меньше, ведь работал один человек вместо двоих.
«Но сейчас таких вакансий стало меньше, то есть компании вновь готовы платить за нативную разработку человеку на Android за Java или Kotlin, а человеку, который будет заниматься iOS, по Swift и Objective C, соответственно», — отмечает он.
Где выучиться на iOS-разработчика
Можно научиться многим навыкам из бесплатных источников. На youtube есть курсы iOS разработки, в том числе куча примеров разработки комплексных приложений.
Еще стоит отметить о большом количестве энтузиастов, которые в последнее время организуют большое количество конференций и митапов, на которых делятся идеями в разработке, архитектурами подходами к работе с данными, интерфейсами, мобильной безопасностью, тестированием, показывают на продакшн эксперименты с идеями, т. е. горизонты, что очень круто для новичка, только входящего в профессию.
«Самотужно можно научиться как языку, так и работе со сложными API», — объясняет Ярослав.
Но курсы вносят системность в знания. Например, человек может знать, как писать архитектуру, но не знает, как делать запрос на сервер.
Компания Apple тоже знает о существовании комьюнити, и со своей стороны тоже поддерживает подобные инициативы, приглашая некоторых разработчиков из Украины в компанию, чтобы они прочли какую-нибудь лекцию.
Что нужно учить в первую очередь
По словам опытного разработчика, учить нужно Swift. Затем работа с базовыми системными API, работа с сервером и сторонними библиотеками, в процессе разобраться с Human Interface и уметь прототипировать дизайн. Важно учиться читать документацию. Этого уже достаточно для начала работы в коммерции. Сейчас уже начинают сразу со SwiftUI, но я бы не советовал большинство проектов до сих пор на Swift, некоторые до сих пор на Objective-C. Вход со Swift будет сложнее SwiftUI, если это ваш первый язык, но потом будет куда легче.
Книги
Каждый год выходят учебники разных авторов, предлагающих обучение программированию для iOS-разработчика, Swift и подобных тем, но они специфичны потому, что могут быть полезны для человека, который не идет на курсы и может начать с изучения литературы.
Для тех же, кто решил начать обучение с курсов, следующие книги, которые рекомендует Ярослав, могут быть полезны для изучения конкретных вещей типа фреймворка Apple, тестов, реактивного программирования и других. Они будут полезны всем как профессионалам, так и практикующим разработчикам любого уровня.
Кроме того, очень рекомендую серию книг от Рэя Вендерлинча (Ray Wenderlich). Там есть куча книг по разным iOS фреймворкам, в частности, рекламное программирование на Swift или геймдев.
Hacking with Swift от Пола Хадсона.
«iOS15 Programming fundamentals with Swift» от издательства Oreilly.
«Swift 4 Protocol-Oriented Programming» от Джона Хоффмана (Jon Hoffman).
«Server-side Swift» от Пола Хадсона (Paul Hudson).
Среди советов книг, не относящихся к непосредственным iOS-разработкам или Swift, Ярослав посоветовал классику типа Чистого Кода, Канбана, которая может быть в общем полезным для любого разработчика современного продукта.
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, а их настройка вынесена в код.
Чтобы освоить тему, рекомендую:
- пройти подробный урок от Ryan Ackermann и Matthijs Hollemans
- пройти бесплатный мини-курс от Brian Voong
- посмотреть два видео на русском языке видео 1 и видео 2 на канале The Swift Developers
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 становится гораздо проще при использовании библиотек подобных Keychain Swift)
Я считаю, что равномерно распределив указанные выше темы и уделяя учебе от 20 часов в неделю, реально даже с нуля освоить всё это за срок в 4-5 месяцев.
С таким багажом знаний можно начинать брать заказы на небольшие приложения или ходить на собеседования. К примеру, при наличии вакансии мы бы человека с таким набором знаний взяли в нашу мобильную команду.
Напишите свое законченное приложение
Я уверен, что iOS разработчику стоит иметь своё приложение. Речь идет про законченное приложение, которое решает какую-то нужную задачу или проблему (ничего страшного, если решает только для автора приложения). В процессе написания своего приложения вы столкнетесь с творческими задачами поиска подходящих решений, это не только позволит лучше закрепить теоретические знания, но и доставит вам удовольствие.
Не стесняйтесь своих приложений, показывайте их на собеседованиях. Даже если приложение простое, даже если дизайн делали сами, и получилось не самое красивое приложение (если приложение нужное, функционал потом можно расширить, а дизайн сделать новый).