Все потоки
Поиск
Написать публикацию
Обновить
59.81

iOS *

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

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

WWDC 2023. Что нового для разработчика

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

Всем привет! С вами Анна Жаркова, руководитель группы разработки в ГК Usetech.
Вчера Apple представили Keynote долгожданной WWDC 2023. Как обычно, основная информация по новинкам для разработки вынесена в специальные инженерные сессии, которые будут публиковаться ежедневно всю эту неделю. Краткое описание можно увидеть в What Apple developers need to know at WWDC23

Давайте обсудим основные тенденции и посмотрим, на что будет сделан упор в анонсированных видео. Разумеется, мы не затронем все 175 сессий, но обозначим топовые тематики:

  • SwiftUI,
  • виджеты и App Clips,
  • Swift,
  • безопасность, приватность и сеть,
  • Xcode,
  • VR/AR.

И начнем мы с самой долгожданной для многих разработчиков новинки:
Читать дальше →

Regular expressions in Swift

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

Регулярные выражения в Swift

Регулярные выражения позволяют нам выполнять сложные операции поиска и замены в тысячах текстовых файлов всего за несколько секунд, поэтому неудивительно, что они популярны уже более 50 лет. Apple обеспечивает поддержку регулярных выражений на всех своих платформах – iOS, macOS, tvOS и даже watchOS – все они используют один и тот же класс, NSRegularExpression. Это чрезвычайно быстрый и эффективный способ поиска и замены сложного текста десятки тысяч раз, и все это доступно для использования разработчиками Swift.

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

Начнем с основ.

Давайте начнем с пары простых примеров для тех, кто раньше не использовал регулярные выражения. Регулярные выражения – сокращенно regexes – предназначены для того, чтобы мы могли выполнять нечеткий поиск внутри строк. Например, мы знаем, что "cat".contains("at") является истиной, но что, если мы захотим сопоставить любое трехбуквенное слово, оканчивающееся на "at"?

Это как раз то, для чего предназначены регулярные выражения.

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

Регулярные выражения в Swift

Мобильная разработка за неделю #491 (29 мая — 4 июня)

Время на прочтение4 мин
Количество просмотров2.1K
В нашем новом дайджесте опыт проектирования Live Activity и создание адресной системы, повышение скорости запуска и многопоточность, разработка в Японии, обновления Flutter, приложения на арабском, блокировки RuStore и многое другое.

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

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

Упрощаем разработку на React Native: чем полезен CocoaPods?

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

В МойОфис мы создаем продукты для совместной работы и делового общения. В том числе стремимся делать так, чтобы доступ к корпоративной коммуникации был максимально удобным для пользователя. Большинство наших решений — от редакторов документов и почтовых систем до цифрового рабочего пространства Squadus — представлены, помимо десктопа и веба, на основных мобильных платформах.

iOS- и Android-приложения Squadus мы разрабатываем с помощью кроссплатформенного фреймворка React Native. И сегодня расскажем о том, какое значение в iOS-разработке имеет CocoaPods — мощный инструмент управления нативными iOS-зависимостями, который позволяет упростить управление вашим проектом.

Под катом разбираем основы работы с CocoaPods, а также пример его использования в проекте для исправления ошибки.

Читать далее

Современные паттерны навигации в iOS-приложениях

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

По данным 42Matters, каждый месяц в Apple App Store появляется более 30 000 новых приложений. В условиях жесткой конкуренции требования к новым проектам постоянно растут. Чтобы стать популярным, приложению нужно быть полезным, удобным, интуитивно понятным, логичным и просто красивым. Многие из этих качеств зависят от правильно построенной навигации и применения узнаваемых дизайнерских паттернов.

Как настроить навигацию в iOS-приложении так, чтобы пользователю было легко взаимодействовать с интерфейсом? Чтобы помочь UI/UX-дизайнерам и рассказать о самых популярных паттернах навигации для iOS приложений, мы перевели статью от дизайнера интерфейсов Фрэнка Рауша. Фрэнк — преподаватель, эксперт по юзабилити и консультант по дизайну в международных компаниях. В своем блоге он рассказывает, что такое пирамидальная, пошаговая и плоская навигация, а мы делимся этой информацией с русскоязычными дизайнерами. 

Читать далее

Нельзя просто взять и сделать нормальную адресную систему в приложении

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

Олды помнят, как ещё каких-то 10-15 лет назад заказывали пиццу по телефону, диктуя адрес операторам кол-центра. Мало кто тогда думал, что отсутствие подсказок адресов и карты на сайте с определением геолокации, а уж тем более в мобильном приложении, будет вызывать у нас реакцию «да сложно, что ли, нормальную карту сделать?».

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

Читать далее

Layout библиотека для iOS проектов

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

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

Читать далее

Мобильная разработка за неделю #490 (22 — 28 мая)

Время на прочтение4 мин
Количество просмотров2.6K
В новой подборке однонаправленные архитектуры и ошибки при публикации, не писание сетевого слоя и паттерны проектирования, лучшие практики, проектирование интерфейсов, состояние Fuchsia, лучшие пейволы и многое другое!

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

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

Swift Concurrency Instrument: чем он полезен iOS-разработчику

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

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

Читать далее

Использование TabularData для Dump Data Model

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

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

Например, фреймворк может быть использован для:

Читать далее

ETTrace: надежное профилирование в iOS с Flame Charts

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

Измерение производительности iOS-приложений как правило производится путем профилирования приложения для расчета затрачиваемого времени в каждой функции. Обычно это делается с помощью Time Profiler в Xcode Instruments, но он известен, как медленный и ненадежный.

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

Читать далее

Проектируем быстрые действия в iOS: 58 гайдлайнов

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

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

Несмотря пользу, применяют ее далеко не все, а у тех, кто применяет, часто есть потенциал для улучшения.

В этой статье – 58 гайдлайнов с лучшими практиками и примерами ошибок, которые лучше не совершать при проектировании быстрых действий в iOS, а также идеи применения быстрых действий в e-commerce приложениях.

Читать далее

О многообразии форм однонаправленных архитектур в Swift

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

В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.

Читать далее

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

Мобильная разработка за неделю #489 (15 — 21 мая)

Время на прочтение4 мин
Количество просмотров2.6K
В нашем новом дайджесте безопасная локализация и многомодульные приложения, перформанс 2ГИС и дизайн система Tinder, паттерны проектирования, все видео осеннего Mobius, эффективные интерфейсы, доходы приложений и многое другое.

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

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

Как я преподавал на ИТ-курсах: буст софтов или потраченное время

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

Привет, читатель! Сегодня я расскажу о своём опыте преподавания. Я обычный разработчиĸ, в начале этого года читал лекции по архитектуре на IT-курсах. 

Если ты уже пробовал обучать, в статье сможешь сверить ощущения. А если только задумываешься стать преподавателем, найдёшь ответы о нагрузĸе и мотивации. Пробежимся по пунктам: что тебя ждёт, кроме лекций, сколько времени уйдёт, и в конце ты сможешь осознанно ответить — нужно ли тебе это.

Читать далее

Многомодульное iOS-приложение: подходы к организации межмодульного взаимодействия

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

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

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

Что известно об iPhone 15?

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

Apple представит новые смартфоны уже в сентябре. Судя по «сливам», в этом году, как и в прошлом, в линейку iPhone войдут четыре модели: две — навороченные и дорогие, и две — попроще. Многое о них уже известно, собрали утечки от наиболее авторитетных ресурсов и инсайдеров.

Читать далее

Использование Command Line Tool на Swift в iOS проекте

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

Не так давно на проекте возникла необходимость настроить периодическое обновления информации со стороннего сервиса. В моем случае это был файл‑справочник в формате JSON, хранящийся в Bundle приложения, и ещё Info.plist в придачу. Отмечу, что такие файлы нельзя изменять в запущенном iOS приложении. Да и вообще, вызовы напрямую в сторонний сервис уже в рантайме меня не сильно радовали — в случае сбоя загрузки данных у приложения отваливался кусок функциональности.

Как бы вы поступили в этом случае? Вынесли бы кэширование таких файлов на ваш бэк? Таким образом мы бы решили проблему со сторонним нестабильным сервисом, но что делать с Info.plist?

Первое, что приходит в голову — написать Shell‑скрипт. Но это могло привести к проблемам с поддержкой другими iOS разработчиками. Поэтому было принято решение создать утилиту на Swift.

В сети много материала по созданию Command Line Tool на Swift, но мы разберем абстрактный пример создания такой утилиты сразу в связке с iOS проектом.

Читать далее

ChatGPT и чтение книг в оригинале

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

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

Читать далее

Мобильная разработка за неделю #488 (8 — 14 мая)

Время на прочтение3 мин
Количество просмотров2.6K
В нашем послепраздничном дайджесте новости с I/O 2023 и тёмная сторона Mac App Store, положение SwiftUI и подготовка к Swift 6, разбор Android 13, самое чистое проектирование, отказ от микросервисов в Amazon, заработок чатботов и многое другое.

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

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