Swift Tips
3.27K subscribers
456 photos
16 videos
2 files
434 links
Ежедневные советы, подсказки, лайфхаки и статьи по iOS и Swift.

По всем вопросам: @artemiygreg
Найти проект: @ios_job
Download Telegram
Profiling apps using Instruments

Apple выпустила новую серию туториалов по использованию Instruments для анализа производительности, ресурсов и поведения приложений.

• Getting started with hang analysis
• Identifying a hang
• Analyzing main thread activity
• Determining execution frequency
• Reducing main thread work by doing less
• Executing work asynchronously
• Understanding synchronous and asynchronous hangs
• Ensuring work executes on a background thread

Читать (En)
4👍97🔥5
Осторожно, Combine! Откуда берутся утечки памяти, потеря эвентов, нестабильность операторов и что с этим всем делать

Большая статья, в которой разработчик из Яндекс Диска делится опытом внедрения Combine и рассказывает как исправляли проблемы, с которыми столкнулсь.

🟢Как решали проблему потокобезопасности
🟢Как исправить потерю деманда и утечки памяти
🟢Как не терять эвенты
🟢Как решали проблемы со стандартным шедулером
🟢Что делать, если нельзя полагаться на стабильность дефолтных операторов
🟢Отсутствие какого-либо дебага
🟢Отсутствие большинства важных операторов

Библиотека с фиксами из статьи → CombineKit

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍11🔥54
iOS Developer Toolset to boost productivity

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

🟢Types / Models Generator
🟢Gitignore Generator
🟢Sequence Diagram Generator
🟢Frameworks Availability Checker
🟢Device Resolution Checker
🟢Constraints Errors Translator
🟢Xcode Tips
🟢Proxyman
🟢Charles

Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥115👍5👏1
3👍4🔥32
Forwarded from Mobile Native ️️
iOS 18 для разработчиков: Ключевые изменения в UIKit

Большая статья с обзором нововведений и самых интересных обновлений UIKit в iOS 18 — новый TabBar, анимации, совместимость UIKit/SwiftUI и т.д..

🟢Сравнение кода в iOS 17 и iOS 18
🟢Новый TabBar в iPadOS 18
🟢Плавные переходы (fluid transitions)
🟢Animations
🟢Gesture recognizers
🟢Automatic trait tracking
🟢List environment trait
🟢UIUpdateLink
🟢Symbol animations
🟢Sensory feedback
🟢Text improvenments
🟢Writing Tools support

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥8👍42
iOS Performance Optimization

Репозиторий с подборкой различных ресурсов/статей по оптимизации перфоманса iOS приложений.

🟢Reduce App Size
🟢Reduce Build time
🟢App Launch time
🟢App Runtime
🟢App Hang
🟢Memory usage
🟢CI

GitHub → iOS-Performance-Optimization
Please open Telegram to view this post
VIEW IN TELEGRAM
610🔥5👍2
Корзина в Додо Пицце на iOS 14: баг длиной в полгода

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

Читать (Ru)
🔥123👍3
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя

Большая статья от Сергея Гнатюка на тему использования старых технологий в iOS-разработке, таких как Objective-C и являются ли такие технологии легаси.

🟢Статистика использования языков
🟢Историческая справка
🟢Сильные и слабые стороны
🟢Совместимость
🟢Миграция
🟢Рекомендуемые материалы для расширения кругозора
🟢Заключение

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥8🤡83👍2
The perfect iOS networking layer

Несколько больших статей на тему создания модульного, расширяемого и тестируемого сетевого слоя в iOS.

Первая часть про проектирование API-клиента(запросы, кейсы использования, авторизация, логгирование), вторая часть – модульные и интеграционные тесты.

• Part 1
• Part 2
5👍103🔥3🤮2
Faster iOS Networking with Shared Dictionary Compression

И ещё одна статья в догонку про Networking, а именно про то, как с помощью Shared Dictionary Compression ускорить сетевое взаимодействие.

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

Читать (En)
🔥4👍3🤔2
Swift async / await на примерах

В статье подробно рассматриваются ключевые слова async/await, их принцип работы и что означает "неблокирующее ожидание".

🟢Что такое swift async/await
🟢Пример – Async/await. Http запрос
🟢Пример – Async computed property. Загрузка изображения
🟢Пример – Async let. Одновременная загрузка двух изображений
🟢Пример – AsyncSequence. Отображение процента загрузки изображения
🟢Пример – AsyncStream. Перенос логики загрузки изображения
🟢Итоги
🟢Полезные ссылки

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍95🔥4
Forwarded from Mobile Native ️️
Тактильный отклик в мобильных приложениях: что это такое, когда использовать и зачем?

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

👉 Что такое тактильная обратная связь?
👉 Разница между тактильной обратной связью и виброоткликом
👉 Чем полезен тактильный отклик
👉 Когда использовать тактильный отклик
👉 Советы по внедрению тактильного отклика
👉 Примеры в приложениях
👉 Самое главное
👉 Заключение

Тактильная обратная связь (или haptic feedback) — использование сложных вибрационных паттернов и виброволн для передачи информации пользователю. Если говорить проще и понятнее:

Тактильный отклик — это способ, с помощью которого устройства могут «говорить» с нами с помощью вибраций.


Читать (Ru)
👍7🔥42💩2
Prevent screenshot capture of sensitive SwiftUI views

Пошаговый гайд с примерами кода, как запретить создание скриншотов в SwiftUI для экранов с конфиденциальной инфой.

Читать (En)
🔥52👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Implement blurring when multitasking in SwiftUI

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

Читать (En)
6🔥94👍2
App Intents: новые возможности для разработчиков в iOS 18

Большая статья про App Intents – что это такое и как их использовать для создания сложных сценариев, которые расширят возможности вашего приложения.

🟢Что такое App Intents
🟢Как создать AppIntent? (Intent)
🟢Пример Intent
🟢Пример AppEntity
🟢Что такое Shortcuts
🟢Shortcuts как составляющая часть фреймворка AppIntents
🟢Shortcuts как приложение
🟢Гайдлайн от Apple по созданию App Intents
🟢Открытие приложения при работе с App Intents
🟢Практика
🟢Новые фишки AppIntents, которые могут быть полезны
🟢Обновления для разработчиков
🟢UnionValue
🟢Generated titles
🟢Framework improvements
🟢Вывод

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍75🔥4
Task и structured concurrency в Swift

В этой статье подробно рассматривается сущность под названием Task и показывается на примерах, как с ней работать.

А также затрагивается structured concurrency: что это такое, как это понятие связано с Task и почему механизмы языка async/await structured, но не concurrent.

🟢Task
🟢Structured concurrency
🟢Task hierarchy
🟢Task cancellation
🟢Итоги
🟢Полезные ссылки

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥4👍2
Understanding actors in Swift

В статье рассказывается как работают акторы в Swift и как их использовать для предотвращения data races при работе с concurrency.

🟢How do Swift actors prevent data races?
🟢Defining an actor
🟢Using async/await to access data from an actor
🟢Actor isolation
🟢Actor's non-isolated declarations
🟢Handling thread safety with Sendable types
🟢Actor reentrancy

Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍32
This media is not supported in your browser
VIEW IN TELEGRAM
Creating view transitions in SwiftUI

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

Читать (En)
👍4🔥32
Разбираем iOS-приложение: код, сборка, статические и динамические библиотеки, компиляция, запуск

Достаточно крутая и большая статья про низкоуровневые штуки iOS-приложения: как приложение устроено под капотом, какие этапы проходит перед тем, как оказаться на устройстве пользователя, что такое Executable binary и что происходит внутри препроцессора.

Читать (Ru)
8🔥114👍4