Как стать автором
Поиск
Написать публикацию
Обновить
39.98

iOS *

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

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

Диспетчеризация в main thread с помощью MainActor

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

MainActor — это новый атрибут из Swift 5.5, который представляет из себя глобальный актор, выполняющий свои задачи в главном потоке (main thread). При создании приложений очень важно следить за тем, чтобы задачи обновления UI выполнялись в главном потоке, что при использовании нескольких фоновых потоков (background threads) иногда может быть затруднительно. Использование атрибута @MainActor поможет вам гарантировать, что ваш UI всегда будет обновляться в главном потоке.

Если вы не очень хорошо разбираетесь в акторах (Actor) в Swift, я рекомендую прочитать мою статью Акторы в Swift: как их использовать и как предотвращать состояние гонки по данным. Глобальные акторы (Global actors) ведут себя аналогично обычным акторам, и в этой статье я не буду вдаваться в подробности того, как работают обычные акторы.

Читать далее

Диалоги подтверждения в SwiftUI

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

Третья версия SwiftUI принесла нам несколько модификаторов представления (view modifiers), которые позволяют нам одинаково обрабатывать семантически похожие операции для разных представлений. Например одним из таких модификаторов представления является onSubmit, который мы можем использовать для управления как формами, так и полями поиска (search fields). На этой неделе мы поговорим о другом модификаторе представления, который SwiftUI предоставляет нам для отображения диалоговых окон подтверждения (confirmationDialog).

Диалог подтверждения (confirmation dialog) — это очень распространенный шаблон UI/UX, который мы обычно используем для подтверждения любых опасных действий в наших приложениях. Например, мы можем выводить диалоговое окно подтверждения перед удалением каких-либо конфиденциальных данных из приложения.

Читать далее

Уязвимости в iOS

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

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

Одним из примеров таких ОС является семейство iOS, которое появились в результате синтеза IPhoneOS и ОС Darwin. iOS использует достаточно уникальный подход к обеспечению безопасности. Для того, чтобы гарантировать безопасность ОС, для нее разрабатываются устройства, содержащих большое количество механизмов защиты.

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

Уязвимости iOS

MBLT возвращается

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

Привет, Хабр! 

В 2022-м году пройдет 13-я Международная мобильная конференция MBLT+ для бизнеса и разработки. Сегодня мы расскажем, почему конференции MBLT и MBLT Dev являются знаковыми событиями в индустрии с 2012 года, и почему в 2022-м году ты должен быть там!

Читать далее

Знакомимся с async/await в Swift

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

Один из самых ожидаемых релизов на WWDC 21 - новая многопоточность в iOS среде.

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

Читать далее

Дайджест интересных материалов для мобильного разработчика #404 (26 июля — 1 августа)

Время на прочтение3 мин
Количество просмотров2.5K
В этом дайджесте читайте про фоновые задачи в Android 12 и однократные замыкания в Swift, про первый стабильный релиз Jetpack Compose и ускорение я сборок, музыку для инди, различия в покупках на iOS и Android, форменный UX и многое другое!

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

Как мы ускорили разработку и тестирование мобильных приложений

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

Представим ситуацию: вы разрабатываете экран, до которого в приложении очень сложно добраться. Например, надо авторизоваться, положить товар в корзину, оформить заказ, оплатить его… Таких экранов много, особенно на крупных проектах, а время регулярно тратят все участники команды: при разработке, на code review и тестировании. Это особенно ощутимо на крупных проектах, когда таких труднодоступных экранов много.

Если эта ситуация вам знакома — то вы зашли по адресу! Меня зовут Александр Чаусов, и в статье я расскажу, как мы в Surf увеличили скорость тестирования UI.

Читать далее

Неправильный путь в backend driven UI. Доклад Яндекса

Время на прочтение8 мин
Количество просмотров5.7K
Архитектура современных приложений часто позволяет передавать логику между клиентом и бэкендом. Главное — не зайти в этих экспериментах слишком далеко. Разработчик iOS-приложения Авто.ру Сергей Сергеев объяснил, как его команда пришла к backend driven UI не самым легким способом.

— Всем привет. Я iOS-разработчик, но история будет кроссплатформенная.
Читать дальше →

Разбираемся с AsyncImage в SwiftUI

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

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

Читать далее

@Once: однократные замыкания

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

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

Чтобы понять, зачем, вот вам простой пример.

Читать далее

Дайджест интересных материалов для мобильного разработчика #403 (19 — 25 июля)

Время на прочтение3 мин
Количество просмотров2.7K
В новом дайджесте тесты и танцы с ассетами в iOS, собеседование и новые функции в Android, декомпозиция игровой графики, ошибки в мобильном дизайне, время в приложениях и многое другое!

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

Внедряем Snapshot testing в UI-тесты iOS

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

Хабр, привет!

Меня зовут Борис. Я AQA iOS-engineer в Vivid Money.

В этой статье я хочу рассказать про snapshot тесты и показать, как их можно эффективно применять в своём проекте.

Данная статья будет полезна начинающим iOS-автоматизаторам, либо разработчикам, которые решили изучить XCUITest и покрыть свой проект ui-тестами.

В рамках статьи мы разберем:

• Что такое snapshot тесты и когда их применять;

• Какие есть библиотеки;

• Поэтапно расскажу и покажу как внедрить их у себя в проекте.

Читать далее

История умалчивает, или Легко ли найти давние сообщения в мессенджере iPhone?

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


Статья Спенсера Дейли (Spencer Dailey) в переводе звучит так: «Ваш iPhone (и резервные копии в iCloud) полны старых iMessage-сообщений объемом в гигабайты, которые практически невозможно прочитать». Но мы чуть упростили заголовок.
— — — —
У многих владельцев iPhone есть написанные годы назад сообщения iMessage, к которым у них отсутствует доступ. Например, мы с женой просто хотели прочитать первые сообщения, которыми обменивались в 2017 году, но не смогли этого сделать. Одна моя подруга недавно хотела доказать, что у неё было общение с человеком из иммиграционной службы США, и она смогла быстро скачать файл с возможностью поиска. Для этого ей не понадобились сторонние приложения. Но она пользовалась не iMessage, а другим мессенджером.
Читать дальше →

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

Материалы для мобильных разработчиков с DevDay Mobile

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

Неделю с небольшим назад прошел онлайн-митап, который будет интересен как опытным iOS- и Android-разработчикам, так и тем, кто только выбирает путь. Два хардкорных доклада и дискуссия о состоянии рынка — под катом в виде записей с таймкодами и презентациями.

Читать далее

Дайджест интересных материалов для мобильного разработчика #402 (12 — 18 июля)

Время на прочтение3 мин
Количество просмотров3.2K
В новом дайджесте тесты и танцы с ассетами в iOS, собеседование и новые функции в Android, декомпозиция игровой графики, ошибки в мобильном дизайне, время в приложениях и многое другое!

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

О дизайн-системе замолвите слово

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

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

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

Если вам удобнее не читать, а смотреть или слушать, то вы можете посмотреть выпуск о дизайн-системе в нашем видео-блоге “Охэхэнных историй”

Читать далее

Тесты в iOS: хороший, плохой, …

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

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

Добро пожаловать под кат!

Читать далее

Танцы с ассетами

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

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

Читать далее

Дайджест интересных материалов для мобильного разработчика #401 (5 июля — 11 июля)

Время на прочтение3 мин
Количество просмотров2.6K
В этой подборке SwiftLint и VSO, панические кнопки и властелины модулей, шутеры без даунтаймов и масштабируемые команды, ускорение билдов, открытый Lumberyard, миллиарды Pokémon GO и многое другое!

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

Пишем плагин Parcelize для компилятора Kotlin под iOS

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

В этой статье описан мой опыт по написанию плагина для компилятора Kotlin. Моей главной целью было создание плагина под iOS (Kotlin/Native), аналогичного kotlin-parcelize под Android. Дело в том, что в iOS, как и в Android, приложения тоже могут быть убиты системой, а значит, может возникнуть необходимость сохранять стек навигации и другие данные. В результате работы над этой задачей получился kotlin-parcelize-darwin. Подробности о его создании и применении — под катом.

Читать далее