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

Swift *

Открытый объектно-ориентированный язык

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

Готов ли Swift OpenAPI Generator для продуктивного кода?

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

Привет! Меня зовут Андрей, я iOS-разработчик приложения «Пункт Ozon». С помощью него сотрудники пунктов выдачи Ozon выдают посылки, принимают возвраты, проводят инвентаризации. 

Мы хотим упростить работу с OpenAPI-спецификациями, внедрив кодогенерацию для автоматического создания кода на Swift из YAML- или JSON-файла спецификации. Это позволяет автоматизировать создание DTO, сделать их единообразными и повысить эффективность разработки. Кодогенератор также упрощает сетевой слой, генерируя методы API, наборы параметров, заголовки и т.д.

На WWDC `23 Apple представила свой Open Source-генератор Swift OpenAPI Generator, который как раз и решает эту задачу. Давайте рассмотрим, готов ли в текущем виде Swift OpenAPI Generator для решения нашей проблемы.

Читать далее

Архитектура SwiftUI + VIPER: модульный подход к разработке iOS‑приложений

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

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

И ни капельки UIKit и другой темной магии..

Читать далее

Скорее жив, чем мёртв: тенденция по развитию iOS технологий

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

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

После 24 февраля 2022 года, события в iOS разработке начали меняться не в лучшую сторону. Приложения "крупных" компаний удаляются из App Store (пример Сбербанк, Альфа банк, ВТБ, Тинькофф). Кажется, что iOS разработчики становятся в России не актуальными, а количество Flutter разработчиков увеличивается. Так что же нас ждет? Неужели придется учить Kotlin, или вообще уходить в C++?

Читать далее

Книги по Swift и iOS-разработке для начинающих специалистов и профессионалов

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

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

Читать далее

Что мобильным разработчикам расскажут на Mobius 2023 Autumn: от Compose и SwiftUI до компьютерного зрения

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

Близится очередная конференция Mobius, и пришло время представить Хабру её программу.

Суть прежняя: тут есть доклады и по iOS-разработке, и по Android, и по кроссплатформенным технологиям вроде Flutter. И про свежие тренды (вплоть до шлема Apple Vision Pro), и про более фундаментальные вопросы вроде архитектурных.

А что конкретно будет? Собрали под катом описания всех докладов, разделив их на тематические блоки.

Программа Mobius 2023 Autumn

WidgetKit в iOS — не просто большие иконки

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

Меня зовут Даша, я iOS-разработчик в Surf. Сегодня я освежу в вашей памяти философию и design виджетов. Подсвечу технические аспекты, которые помогут, если вы собираетесь делать свой первый виджет или хотите вдохнуть жизнь в старый. А ещё затрону несколько неочевидных, но важных тем.

Читать далее

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Читать далее

Собери сам: Набор для разработки на SwiftUI

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

Хотели когда-нибудь попробовать SwiftUI? А может быть вы как раз искали ресурсы для изучения? Может быть у вас есть Macbook и вам абсолютно нечем заняться на ближайших выходных? Если вы кто-то или что-то из вышеперечисленного, то эта статья для вас.

Программирование лучше всего изучать в бою – на практике, попутно обращаясь к большому объему справочной информации. Эта статья содержит справочную информацию которая облегчит вам разработку на SwiftUI, чтобы вы сразу бежали в бой.

Пора в бой!

Универсальные датасорсы в iOS-разработке

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

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

Универсальные датасорсы предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных. Они обеспечивают абстракцию, которая дает разработчикам возможность работать с данными в коллекциях независимо от их происхождения или формата хранения. Это позволяет легко изменять источник данных, добавлять новые функции и поддерживать разные типы данных в приложении.

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

Читать далее

CD-диск на шейдерах и NameDrop в iOS 17

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

Шейдеры отлично подходят для симуляции материалов. В обычных интерфейсах мы управляем только цветом, но эффект размытия в iOS — пример материала, который совершил революцию в мобильных интерфейсах.

Описать метериал через шейдер сложно, а создать динамичный эффект — ещё сложнее. В этой статье разберём пару примеров: переливающийся диск и нашумевший NameDrop в iOS 17.

Читать далее

Руководство по Использованию Многопоточности в Swift

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

Многопоточность в Swift играет критически важную роль в создании отзывчивых и эффективных приложений. В этой статье мы рассмотрим, когда и как использовать новые возможности многопоточности в Swift, включая async/await, Task и структурированную многопоточность.

Читать далее

UI Testing in Swift with XCTest framework

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

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

Читать далее

@ViewBuilder Что? Зачем? Когда?

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

@ViewBuilder Что? Зачем? Когда? SwiftUI, iOS

Разбор назначения, ограничений и рациональность применения конструктора представлений @ViewBuilder.

Читать далее

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

Установка Swift на Windows. Изолента, клей, cmd

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

Как накатить Swift на Windows и возможно ли это? В этой статье достаточно подробно рассказывается о моих изысканиях по этому поводу. Не до конца ясная документация, ошибки сборки и щепотка крайне неочевидных советов ждут вас в этой статье.

Читать далее

Есть ли смысл начинать писать мобильное приложение не на Kotlin Multiplatform и Compose Multiplatform?

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

Всем привет! Меня зовут Борис Вербицкий, и я представитель того редкого типа iOS разработчиков, которые тепло относятся к Kotlin Multiplatform Project и рады появлению Compose Multiplatform. Здесь я решил поделиться своим опытом использования этих технологий, а также кое-какими размышлениями вокруг процессов с такой разработкой. Цель этой статьи - это поднять обсуждение предложенного мной подхода, послушать все за и против в комментариях.

Приятного чтения!

Читать далее

Интерактивный UX: Как использовать Drag and Drop в UICollectionView на iOS

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

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

В данной статье мы погрузимся в мир Drag and Drop в контексте UICollectionView, одного из наиболее мощных и гибких компонентов пользовательского интерфейса в iOS. Попробуем легко и эффективно внедрить эту функциональность в проекты, создавая интерактивные и удобные интерфейсы для пользователей.

Собственно это то, что у нас получится:

Смотрим дальше

Enum в Swift: Перечисления Возможных Сценариев

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

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

Листаем дальше

Переворачиваем вечный SwiftUI календарь при помощи UIKit

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.4K
Данная статья написана в развлекательных целях. Если вам интересно следить за самыми последними новостями iOS разработки и получать подборку интересных статей по этой тематике, тогда вам стоит подписаться на Телеграм-канал iOS Broadcast

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

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

Расширенное управление памятью с помощью Unsafe Swift

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

Управление памятью — важнейший аспект разработки программного обеспечения, обеспечивающий эффективное использование системных ресурсов и предотвращающий такие ошибки, как утечки памяти и сбои. В Swift управление памятью обычно абстрагируется посредством автоматического подсчета ссылок и безопасных абстракций. Однако существуют сценарии, в которых становится необходимым прямое манипулирование памятью, например взаимодействие с библиотеками C, оптимизация производительности или реализация пользовательских структур данных. В этой статье рассматриваются расширенные возможности Swift по управлению памятью посредством использования его «небезопасных» конструкций, таких как UnsafeMutablePointer и UnsafeRawPointer.

Изучая мощные возможности небезопасных конструкций Swift, таких как UnsafeMutablePointer и UnsafeRawPointer, эта статья призвана предоставить разработчикам Swift знания, необходимые для обработки расширенных сценариев управления памятью, эффективного объединения Swift с API C. и при необходимости оптимизировать производительность. Благодаря реальным примерам и практикам читатели смогут глубже понять тонкости манипуляций с памятью в Swift, уделяя при этом особое внимание безопасности и надежности.

Читать далее

WWDC 2023. Новый фреймворк SwiftData для управления данными. Эксперименты

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

Одним из заметных событий WWDC 2023 для разработчиков, программируемых на языке Swift, стало появление фреймворка SwiftData. В этой статье показано, как создать Схему данных в SwiftData, как выполнить CRUD операции (Create - Создать, Read - прочитать, Update - модифицировать, Delete - удалить), как выполнять запросы Query к данным с помощью предиката Predicate, как использовать "живой" запрос @Queryв SwiftUI и как его динамически настроить. Вы узнаете, как эффективно "закачивать" JSON данные в SwiftData хранилище без блокировки пользовательского интерфейса (UI).

Читать далее