Обновить
52.95

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Live coding интервью для iOS разработчиков

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров13K

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

Какие проблемы должен уметь решать каждый iOS разработчик? Как оценить широту и глубину знаний кандидата?

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

Читать далее

Топ вопросов на Junior собеседованиях

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров18K

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

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

Читать далее

Эволюция архитектуры приложения Facebook для iOS

Время на прочтение13 мин
Количество просмотров1.3K

Facebook для iOS (FBiOS) — старейшая мобильная кодовая база в Meta. С тех пор как приложение было переписано в 2012 году, над ним работали тысячи инженеров, оно было отправлено миллиардам пользователей, и оно может поддерживать работу сотен инженеров одновременно.

После многих лет итерации кодовая база Facebook не похожа на типичную кодовую базу iOS:

Читать далее

Пишем типизированный DI-контейнер для iOS приложения. Часть 2. Жизненные циклы

Время на прочтение8 мин
Количество просмотров2.5K

Привет! На связи KTS и наш привлеченный эксперт по направлению iOS-разработки Александр.

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

В первой статье мы рассказали о своём понимании Dependency Injection, какие бывают зависимости и откуда их получать. Разобрались в паттерне Dependency Container, написали собственную реализацию и поняли, какую проблему он решает.

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

Если вы готовы, погнали! ?

Читать далее

Мобильная разработка за неделю #476 (13 — 19 февраля)

Время на прочтение3 мин
Количество просмотров1.7K
В новом дайджесте эволюция архитектуры приложения FBiOS и лабиринт, в который попал Google, превратности диспетчеризации и MDM, KMM, темный режим, Репка Pi 3 и многое другое.

В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

Читать дальше →

AR Face tracking в Unity3d под Android/IOS

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.4K

Инструкция по внедрению Face Tracking в проект от Unity хорошая, объясняет многие вещи и проект билдится и работает хорошо. Но только на Android. На IOS будет выдавать много непонятно откуда взявшихся ошибок. После трех-дневной пляски с бубном удалось таки настроить систему для корректной работы face tracking, с чем сегодня с вами и делюсь.

Читать далее

Как мы сократили время запуска нашего iOS-приложения на 60%

Время на прочтение6 мин
Количество просмотров1.7K

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

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

В этой статье мы рассмотрим три отдельные оптимизации, которые сократили время, необходимое для запуска нашего потребительского приложения для iOS, на 60 %. Мы определили эти возможности, используя проприетарные инструменты повышения производительности, но инструменты Xcode или DTrace также могут быть подходящими альтернативами.

Читать далее

NSPredicate: старый API с новыми сюрпризами

Время на прочтение4 мин
Количество просмотров1K

Недавно я работал с NSPredicate — API, который существует с момента выхода Mac OS X Tiger в 2005 году — и в довольно простой ситуации на самом деле все оказалось не так, как я ожидал.

Я имплементировал поддержку Apple Shortcuts в свое приложение для чтения, чтобы пользователи могли создавать автоматизированные рабочие процессы и заметил, что некоторые запросы статьи на основе свойств с использованием EntityPropertyQuery не выдавали их ожидаемое количество. У меня было четырнадцать статей, сохраненных на симуляторе iPad. Четыре из них были написаны лично мной. Однако когда я осуществлял поиск статей, автором которых был не "Дуглас Хилл (Douglas Hill)", получилось всего два результата вместо ожидаемых десяти.

Читать далее

Что нового в Swift 5.7: Regex

Время на прочтение4 мин
Количество просмотров2.7K

Всем привет! Сегодня я собираюсь показать вам, как работать с Swift Regex, который был добавлен в Swift 5.7

Читать далее

Наблюдение за смещением содержимого SwiftUI ScrollView

Время на прочтение6 мин
Количество просмотров3.7K

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

Однако, когда дело доходит до ScrollView SwiftUI, в настоящее время (на момент написания) не существует встроенного способа выполнения таких наблюдений за прокруткой. Хотя встраивание ScrollViewReader во view (представление, вью, вьюшка) прокрутки позволяет нам изменять положение прокрутки в коде, оно, как ни странно (особенно учитывая его имя), не позволяет нам каким‑либо образом считывать текущее смещение содержимого.

Один из способов решить эту проблему — использовать богатые возможности UIKit UIScrollView, который благодаря протоколу делегата и методу scrollViewDidScroll обеспечивает простой способ получать уведомления всякий раз, когда происходит прокрутка. Однако, несмотря на то, что я обычно большой поклонник использования UIViewRepresentable и других механизмов взаимодействия SwiftUI/UIKit, в этом случае нам пришлось бы написать довольно много дополнительного кода, чтобы преодолеть разрыв между двумя фреймворками.

Читать далее

DND 18: Создание пользовательских SF Symbols

Время на прочтение2 мин
Количество просмотров1.4K

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

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

Читать далее

Этапы сборки SwiftLint с входными и выходными файлами Xcode

Время на прочтение4 мин
Количество просмотров2.1K

Этот репозиторий содержит пример проекта, демонстрирующий, как настроить этапы сборки SwiftLint с помощью функции файлов ввода-вывода Xcode путем определения действия перед сборкой для создания списка входных файлов для SwiftLint. Эта настройка решает новое предупреждение, появившееся в Xcode 14:

Читать далее

Парсинг ответов на BLE-команды на языке Swift на примере GoPro

Время на прочтение11 мин
Количество просмотров2.6K

Привет, Хабр! Меня зовут Полина, работаю в Doubletapp iOS‑разработчиком и сегодня хочу рассказать о нашем опыте работы с API GoPro, а конкретно с парсингом ответов на команды BLE, которые описаны в этом API.

Содержание:

Принцип работы с BLE-устройствами
Сервисы и характеристики BLE-устройств
Процесс отправки команд и получения ответов через BLE
Простые ответы
Комплексные ответы
Формирование пакетов
Парсинг комплексных ответов
Общий алгоритм работы с BLE-ответом 

Читать далее

Ближайшие события

Самостоятельный хостинг macOS CI на Apple Silicon с приложением Cilicon

Время на прочтение6 мин
Количество просмотров1.5K

Коротко: мы выпустили новое приложение для macOS под названием Cilicon, которое предоставляет и запускает эфемерные виртуальные машины для CI (Cilicon Installer – автономное приложение). Используя его, мы смогли переключиться на собственные Actions Runners и ускорить нашу CI в 3 раза, а также дать вторую жизнь некоторым из наших поврежденных устройств M1 MacBook Pro.

Читать далее

KMP глазами iOS-разработчика

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров15K

Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.

Мы в мобильной команде для шаринга кода на несколько платформ используем KMP. 

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

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

Читать далее

Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект

Время на прочтение13 мин
Количество просмотров6.8K

Сергей Журавель | 22 ноября 2022 г.

Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект

Читать далее

Превратности диспетчеризации в Swift

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4K

Всем привет, меня зовут Сергей, я работаю в компании Joy Dev в должности iOS TeamLead. Эта статья - моя “проба пера” на Хабре. В ней, вместе с обзором видов диспетчеризации в Swift, мы рассмотрим несколько примеров, когда реализация методов в extension может вести себя неожиданным образом. Итак.

Читать далее

Мобильная разработка за неделю #475 (6 — 12 февраля)

Время на прочтение3 мин
Количество просмотров3.2K
В этом выпуске ускорение Swift и первый релиз Android 14, собеседование и тестирование, спрос на мобильных разработчиков, приложения для здоровья и фитнеса, прелести legacy-кода и многое другое.

В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

Читать дальше →

Элемент выбора эмодзи (aka EmojiPicker) для iOS как в MacOS

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.8K

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

Читать далее

Экономьте деньги при использовании GitHub Actions для iOS CI/CD

Время на прочтение5 мин
Количество просмотров2.1K

В этом сообщении блога я делюсь советами о том, как наиболее эффективно использовать GitHub Actions и избежать лишнего времени выполнения и денежных затрат.

Я предполагаю, что вы знакомы с GitHub Actions и уже использовали их, но вот краткий обзор:

Читать далее