EasySwift iOS🍏
2.95K subscribers
274 photos
8 videos
439 links
Все самое интересное в мире iOS разработки 🧑🏻‍💻

Предложить статью или новость: @EasySwiftBot

По всем вопросам обращаться к @itereznikov
Download Telegram
Improving the approachability of data-race safety

🖥 Документ из Swift Evolution описывает видение по повышению удобства Swift 6 concurrency, фокусируясь на устранении ложных ошибок data-race safety в последовательном коде и упрощении миграции. Основные цели — сохранить безопасность памяти, сделать базовый concurrency простым и продвинутое — естественным, с тремя этапами: последовательный код, async без параллелизма, затем parallelism для производительности.

Модель Swift 6 предполагает конкурентность по умолчанию, что приводит к ложным срабатываниям ошибок в коде, который на самом деле является однопоточным.

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

➡️ Предлагаются инструменты для упрощения перехода существующих кодовых баз на новые функции конкурентности Swift, включая автоматическую миграцию.

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

ℹ️ Хоть документ и не новый, рекомендую с ним ознакомиться - сможете лучше понимать куда в целом движется развитие языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Bridging completion handlers to Swift's async/await

🔍 Если хотели провести миграцию с completion handlers на async/await - загляните в статью. Вот пару советов из нее.

✔️ Функция withCheckedContinuation позволяет создать асинхронную функцию, которая обрабатывает результат из API с обработчиком завершения, обеспечивая безопасное возобновление выполнения.

⚠️ Для API, которые могут возвращать ошибки, можно использовать withCheckedThrowingContinuation, что позволяет обрабатывать ошибки с помощью синтаксиса try await.

🛡 withCheckedContinuation и withCheckedThrowingContinuation обеспечивают проверку на наличие множественных вызовов resume, в то время как withUnsafeContinuation и withUnsafeThrowingContinuation не выполняют таких проверок, что делает их менее безопасными.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4👍21
Навигация на SwiftUI: чего не хватает и как исправить

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

⚙️ Для масштабных проектов необходима поддержка различных навигационных компонентов, таких как Bottom Sheet, алерты и диплинки, что требует продуманной архитектуры.

➡️ Использование паттерна Coordinator позволяет разделить логику навигации и отображения, что упрощает поддержку и тестирование приложений.

🖥 Кастомные алерты в SwiftUI требуют сложной логики для отображения и управления, что может привести к ошибкам и усложнению кода.

➡️ Реализация динамических шторок в SwiftUI до iOS 16 была сложной, и для этого часто использовались UIKit-библиотеки, что увеличивало сложность навигации.

➡️ Для сложных приложений с диплинками и кастомными алертами рекомендуется использовать UIKit, в то время как для менее сложных задач можно рассмотреть FlowStacks или NavigationStack.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3