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

Swift *

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

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

Пишем виджет в Control Center (iOS 18)

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

На WWDC 2024 Apple представила — виджеты в Control Center для iOS 18. Это новшество позволяет разработчикам добавлять собственные виджеты в новое место в приложении: Control Center, Home Screen. Но можем ли мы делать кастомную вёрстку в новых виджетах? Или подтянуть данные из сети?

В этой статье разберёмся с новыми виджетами, ответим на вопросы выше. А в завершении статьи вы найдёте сниппеты кода, чтобы быстро добавить виджеты в свой проект.

Читать далее

Изучаем новые структуры данных для iOS разработчика

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

Мобильные разработчики редко сталкиваются в работе со сложными структурами данных. Как правило, в рутинных задачах вполне достаточно уметь использовать  ArrayDictionary и Set. Но сегодня не об этом. Хороших статей о том, как устроены эти структуры данных, предостаточно.

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

Читать далее

Принципы SOLID на примере iOS-разработки

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

Привет, меня зовут Антон, я iOS-разработчик в компании Surf. Все программисты хотят писать красивый, масштабируемый и сопровождаемый код, и мобильщики – не исключение. Как в этом помогут принципы SOLID, и зачем они нужны?

Расскажем и покажем на примерах (куда без этого). Кейсы в статье относятся к iOS-разработке, но они будут полезны для всех разработчиков, независимо от стека.

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

Адаптируем VoiceOver для людей

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

Меня зовут Женя Тютюев, я iOS-разработчик в компании 2ГИС. Хочу поделиться, как адаптировал наше приложение под VoiceOver: 

— Делюсь историей про сдвиг парадигмы и как перешёл из стадии «делать, потому что Эпл советует» в совершенно новую — «делать для людей». 

— Как разработал новый вид snapshot-тестирования, чтобы ничего не ломалось при добавлении новых неадаптированных элементов. 

— И описал несколько нюансов, которые важно учесть в работе: escape, динамический расчёт доступности, укрупнение элементов.

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

Читать далее

Макросы в swift — напишут код за вас, но есть нюанс…

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

Привет! Меня зовут Настя Ищенко, я — iOS-разработчик в KTS.

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

Читать далее

Алиса ПРО — для мобильного разработчика

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

Всем привет! Меня зовут Сергей, моё основное направление — мобильные приложения, но помимо этого я пристально наблюдаю за тем, что происходит с ИИ.

Давайте попробуем использовать YaGPT в повседневной работе мобильного разработчика

Читать далее

Защита iOS-приложений от реверс-инженеринга

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

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

Читать далее

Как мы искали применение App Clip… и нашли?

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

Мы в Додо часто заигрываем с новыми технологиями и делаем прикольные фичи. Вы, наверняка, уже использовали Live Activities для отслеживания своего заказа и слышали про AI-пиццу, а может быть и пробовали её.

Недавно у нас дошли руки до App Clips. Мы решили разобраться, могут ли они быть нам полезны, сделали своё мини-приложение и запустили его на проде.

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

Читать далее

Swift 5.10

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

Это минорное обновление языка перед мажорным переходом на Swift 6, которое сосредоточено в основном на устранение проблем с data race при компиляции.

Читать далее

Введение в тестирование на Swift Testing

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

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

Читать далее

Apple Pro Weekly News (10.06 – 16.06.24)

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

Итоги конференции разработчиков Apple WWDC24, какие пасхалки там были спрятаны, что нового замечено в iOS 18, какие новинки Apple приготовила для разработчиков, что за нюансы при запуске Apple Intelligence, кому партнёрство Apple и OpenAI не нравится, а что сказал Тим Кук об ИИ. Это и многое другое – в свежем выпуске дайджеста Apple Pro Weekly News.

Перейти к новостям

CI/CD заказывали? Или простое, но подробное руководство по настройке CI/CD под несколько iOS проектов

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

Привет, меня зовут Дмитрий, и я iOS разработчик в компании Triada. В этой статье я расскажу, как настроить CI/CD для вашего iOS приложения, и приведу пошаговую инструкцию, как сделать это правильно с первого раза – чтобы не пришлось переделывать.

Мы настроим CI/CD для iOS проекта с репозиторием на GitLab с использованием Fastlane. Сборки будем отправлять в Testflight и в Firebase, если он у вас используется.

Читать далее

SwiftUI и MVI

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

UIKit впервые появился в iOS 2 и до сих пор остаётся с нами. Со временем мы привыкли к нему и научились с ним работать. Мы нашли различные архитектурные подходы, и MVVM стал самым популярным, на мой взгляд. С выходом SwiftUI, MVVM ещё больше укрепил свои позиции, в то время как другие архитектуры не очень хорошо себя чувствую на SwiftUI.

Однако архитектуры, которые, казалось бы, не могут быть использованы со SwiftUI, возможно адаптировать к SwiftUI, и они даже могут быть удобнее, чем MVVM.

Я хочу рассказать об одной из таких архитектур — MVI

Читать далее

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

Виды логирования в Swift

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

Привет! Меня зовут Владислав Даниелян, я iOS-разработчик в AGIMA. Предлагаю немного поговорить о принтах. Это одна из первых и наиболее используемых функций, с которой начинаются первые шаги в разработке у любого новичка:

Цель статьи — сэкономить время начинающих разработчиков, уберечь их от бесконечного потока непонятных сообщений в консоли и от нервов, потраченных на поиск «той самой» строки, которая всё объясняет. Мы разберем виды принтов и напишем свой небольшой логгер, который можно внедрить сразу, параллельно чтению.

Читать далее

WWDC 2024. Обсуждаем, что по факту

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


Всем привет! С вами снова я, Анна Жаркова, руководитель группы разработки в ГК Usetech. 10 июня прошел долгожданный Keynote WWDC 2024. Прошел и оставил после себя легкий флер разочарования. Заявлено было много, показано много. Какие-то новинки (например, функция Mirroring для трансляции изображения и звука с iPhone на десктоп) вызвали одобрение аудитории, как полезные и нужные. Другие (например, настройка визуального оформления домашнего экрана, общая тема для иконок и то, как это реализовано) оставили многих в недоумении. Да, много полезного, но из-за того, что ожидания от анонса разошлись с действительностью, это меркнет на общем фоне.

Еще больше недоумения вызвал функционал Apple Intelligence. И даже не то, что какие-то вещи были показаны довольно скомкано. Разочарование вызвало 2 момента: дата выхода инструментария и отсутствие тематических сессий:



Были анонсированы и «умные» тулзы для Xcode, и встроенный ChatGPT. Но как этим пользоваться, как встраивать, как с этим работать, такой информации напрямую нет. Она частично размазана по сессиям по вспомогательным технологиям. Из них и будем черпать знания.

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

Что нового в Swift 6?

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

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

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

Читать далее

AI: типовые задачи  iOS разработчика

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

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

Читать далее

SwiftUI уроки (часть 14)

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

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

Читать далее

SwiftUI уроки (часть 13)

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

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

Читать далее

Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17

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

Если вы хотите получить фундаментальные знания по разработки  iOS приложений с помощью SwiftUI, вам следует пройти стэнфордский курс CS193P. Предложенные в весеннем семестре 2023 года лекции Стэнфордского курса CS193P «Developing  Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») — это уже 3-я реинкарнация курса CS193P с фреймворком SwiftUI.

В настоящий момент действуют Xcode 15 / iOS 17, которые были представлены на WWDC 2023 уже после завершения курса CS193P, наиболее значимое обновление внесено в механизм реактивного UI в SwiftUI (макрос @Observable против протокола ObservableObject).

В иллюстрированных  русскоязычных конспектах этого курса сделаны пометки, касающиеся изменений в iOS 17. Для большинства Лекций представлена версия с  использование макроса @Observable вместо протокола ObservableObject, в ряде случаев это потребовало нетривиальных решений. 

Читать далее