Как стать автором
Обновить
36.36

Swift *

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

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

Совместное использование контента в SwiftUI

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

Apple представила совершенно новый фреймворк CoreTransferable и ShareLink вью в SwiftUI, позволив нам совместно использовать контент и экспортировать его из наших приложений весьма декларативно. На этой неделе мы узнаем, как сделать данные передаваемыми (* переносимыми) и как использовать новое вью ShareLink в SwiftUI.

Читать далее
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

Интеграция Yandex MapKit в SwiftUI проект. Часть 1

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

Всех приветствую.

Совсем недавно поступила задача заменить стандартные карты от Apple на Яндекс карты. Ниже немного о Yandex MapKit.

Yandex MapKit — это кроссплатформенная библиотека, которая позволяет использовать возможности Яндекс.Карт в мобильных приложениях для iOS и Android.

Основная проблема заключалась в том, что библиотека Yandex MapKit создана для UIKit, но наша цель поставить все это дело на SwiftUI. Поэтому прибегаем к старой доброй пикче.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Swift async/await. Чем он лучше GCD?

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

Прошло уже больше года с момента выпуска async/await. Многие крупные и не очень проекты уже успели поднять минимальную версию до iOS 13, следовательно открылась возможность полноценно использовать новые языковые возможности по работе с асинхронным кодом. Но перед тем как начать полноценно рефакторить старый код и/или писать новый код используя относительно новую технологию в голове невольно всплывает вопрос: «А зачем? Чем это лучше того же GCD?». В этой вступительной статье из серии по async/await постараемся вместе ответить на этот вопрос.

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии13

Test Plans — теперь по умолчанию для новых проектов с Xcode 14.3

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

Начиная с Xcode 11, когда Apple представила Xcode Test Plans для более простого и более настраиваемого управления тестированием и его выполнения, — и новые, и уже существующие проекты приходилось вручную переводить на использование новой системы или создавать новые планы тестирования с нуля. Для тех, кто не знаком: планы тестирования позволяют одному файлу управлять одной или несколькими тестовыми конфигурациями для набора тестов; допускают использование нескольких языков, смоделированных локаций, настроек тестирования и многое другое в одном тестовом запуске. Они могут сэкономить массу времени главным образом для локализованных приложений, приложений с белой меткой или сценариев со сложными конфигурациями сборки.

Переход на планы тестирования не требует больших усилий, вам нужно открыть существующую схему и перейти в раздел Test, а затем нажать кнопку Convert to use Test Plans

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Истории

Хеш-таблица, хеш-функция в Swift

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

Хеш-таблица — это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу. Сегодня мы рассмотрим, что такое хеш-таблица, как она работает и что делает ее полезной.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

SwiftUI вью против модификаторов

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

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

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

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Освоение диаграмм в SwiftUI. Доступность

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

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

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

Читать далее
Рейтинг0
Комментарии0

Как не потерять голову (и память) при поиске утечек в iOS

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

Всем привет! Меня зовут Фируза, я занимаюсь iOS-разработкой в компании SimbirSoft. Хочу поделиться результатами исследования утечек памяти, с которыми я столкнулась на одном из проектов.

Все началось с того, что я заметила подтормаживания UI и обратила внимание на рост занимаемой памяти в процессе использования приложения. В пределах нескольких сценариев расход памяти незначительно колебался – объекты создавались и освобождались. Другие сценарии при непродолжительном использовании приводили к значительному росту памяти, используемой приложением. При активном и продолжительном использовании могут «убежать» сотни мегабайт.

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

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

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии3

Учимся определять способность Core Data к легковесной миграции до загрузки контейнера

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

При создании приложения на основе фреймворка Core Data мы проектируем модель данных, в которую потом снова и снова вносим изменения. Неужели при этом каждый раз нужно удалять все данные и загружать их заново, а заодно перегружать сервер и батареи пользователей? Сначала кажется, что это единственный вариант решения, но я выяснил — всё можно сделать проще.

В статье рассказываю, как свести к минимуму последствия изменений структуры данных и их негативное влияние, а также удивляюсь, почему Core Data ещё сам не предложил такое решение.

Читать далее
Всего голосов 52: ↑52 и ↓0+52
Комментарии0

Реализация спойлеров в SwiftUI

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

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

Читать далее
Рейтинг0
Комментарии0

Отладка SwiftUI с пользовательским модификатором вью

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

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

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

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

Читать далее
Рейтинг0
Комментарии0

Как компании подготовиться к модуляризации iOS приложений

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

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

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

Читать дальше →
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Разбираем ошибки начинающих iOS-разработчиков

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

Привет! Я Александра Башкирова, iOS-инженер в Clover и старший код-ревьюер на курсе «iOS-разработчик» в Яндекс Практикуме. На момент подготовки этой статьи мы уже проверили более тысячи работ студентов и успели заметить повторяющиеся ошибки.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии6

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

Как локализовать все ваши iOS приложения на 20 языков за 5 минут

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

Я создал консольный инструмент, который автоматически находит все файлы .strings в проекте xcode и переводит их на все языки.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии9

Произвольные красивые цвета: RGB, HSL, LCH и вот это вот всё

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

RGB какой-то отстой.

Модель RGB, мало чем отличающаяся от ASCII, адресов памяти и наличия 86 400 секунд в сутках, является одной из тех инструментов, которые немного упрощают программирование, до поры до времени.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии17

The Composable Architecture — лучшие практики

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

Команда The Browser Company активно использует фреймворк The Composable Architecture (TCA). Основываясь на опыте нашей команды и мнениях более широкого сообщества, я разработал новый набор best practices (лучших практик), которые могут принести пользу вашим проектам TCA.

Вот некоторые из ключевых практик, которые можно использовать в своих проектах.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии0

Произвольное вращение линейного градиента SwiftUI

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

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

Однако всякий раз, когда я использовал их раньше, я использовал только встроенные значения direction (направления):.top,.topTrailing,.leading и т. д. И, если быть честным, это были единственные варианты, которыми я располагаю.

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Тестирование конвейера релизов с помощью Fastlane

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

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

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Стилизация компонентов в SwiftUI

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

SwiftUI имеет отличный API для стилизации view независимо от их реализации. В этом посте мы рассмотрим, как мы можем стилизовать пользовательские view таким же образом.

В прошлом году в ходе нескольких эпизодов на Swift Talk мы продемонстрировали, как создать собственный степпер для увеличения и уменьшения значения. Он был похож на Stepper в SwiftUI, но с API, который делает его стильным.

Этот пост является кратким изложением того, что мы рассмотрели тогда, а также несколькими приёмами, которым мы научились с тех пор, чтобы наши пользовательские стили view (представление, вью, вьюшка) работали ещё лучше, как built‑in (встроенные) в SwiftUI. В последующем посте мы рассмотрим несколько более продвинутых вариантов использования.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Перенос URLSessionTask в background URLSession при уходе приложения в фон

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

Всем привет. Всем привет. Меня зовут Максим Батраков и я iOS-разработчик в 65apps. В этой статье я хочу рассказать о некоторых особенностях работы с URLSession, разобрать загрузку файлов в background URLSession и показать процесс переноса выполнения активных запросов в background URLSession после того, как приложение ушло в фон.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии1