Очень необычная и глубокая статья. Автор статьи демонстрирует, как перенести реактивный Combine код на AsyncAlgorithms. Что приятно, автор разбирается в реактивном программировании и любит Combine, от этого статья раскрывается с интересной стороны. В самом начале автор знакомит нас с демо-проектом, написанным на Combine с классическими задачами, легко решаемыми Combine: инкремент бейджа из разных источников, отображение прогресса, работа с сетью. После чего начинает шаг за шагом внедрять Асинхронные алгоритмы:
Проблемы с AsyncChannel
Преимущества AsyncAlgorithms
Я не могу согласиться с выводами автора. Действительно, он смог показать альтернативу Combine, для разработчиков, знакомых с Swift Concurrency, но:
После изучения статьи я смог найти кейсы использования AsyncAlgorithms в своих повседневных задачах, но мигрировать на него с Combine не вижу смысла, а вы?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Хочется в эту пятницу немного с вами похолливарить на тему развития Swift как языка, для этого нашел стаью, которая неплохо описывает развитие Swift как языка и его текущие эволюционные проблемы.
История Swift
Управление языками программирования
Python: Доброжелательный пожизненный диктатор
Rust: Управляемый сообществом продукт с открытым исходным кодом
Kotlin: Поддержка корпорации проекта с открытым исходным кодом
Стимулы в управлении языками программирования
Swift: Пожизненный корпоративный диктатор
Приоритеты и задержки в Swift
Философия дизайна Криса Латтнера
Проблемы с управлением и сообществом
Технический долг и компиляторы
Apple и Swift
Надежда на будущее Swift
Лично я очень люблю Swift и радуюсь его развитию и внедрению всего нового, ведь не обязательно использовать все. Но и разделяю мнение что мы все дальше уходим от концепции простого языка с понятными конструкциями. Что вы думаете по этому поводу?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👏14
Есть множество сценариев, в которых требуется изменять содержимое экрана или реагировать на попытку сделать скриншот экрана. Если в UIKit с этим все разобрались, то про SwiftUI многие забывают. В статье разбирается SwiftUI модификатор, интегрированный с UIKit, для скрытия контента во время создания снимков экрана
hideWithScreenshot
будет создан на основе UITextField
с isSecureTextEntry
для скрытия содержимогоPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
iOS Broadcast
Очень интересный пример, почему Combine актуален даже в мире Swift Concurrency. При миграции на Swift 6 включаются проверки на потенциальные проблемы с многопоточностью и работа с NotificationCenter требует обеспечения явной потокобезопасности. Эту ошибку легко исправить с Combine, интеграция с NotificationCenter у которого давно реализована:
🔵 Объединяем 3 паблишера в один поток данных
🔵 Явно указываем что хотим получать ивенты в главном потоке
🔵 Не забываем про то что assign захватывает сильной ссылкой и либо добавляем
Publishers.MergeMany
receive(on: DispatchQueue.main)
[weak self]
либо вспомогательную функцию weakAssign
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
Опубликовали записи с конференции SwiftConnection, мой топ 8:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5❤1
Замеряем производительность iOS
В прошлом году появилось новое приложение Threads, которое стало самым быстрорастущим в истории, набрав 100 миллионов пользователей за пять дней. Сегодня число пользователей превышает 200 миллионов в месяц. Команда разработкт выросла с небольшой группы опытных инженеров до более чем сотни разработчиков. Перед командой стояла непростая задача, создать и сохранить ощущение быстродействия приложения для наилучшего первого пользовательского опыта. Команда выделила 4 метрики производительности, над которыми они сфокусировались:
🟢 FIRE. Задержка отрисовки изображений. Он показывает, сколько людей не смогли загрузить картинку
🟢 TTNC. Время до завершения запроса. Показывает, как быстро загружается новая лента
🟢 cPSR. Он показывает, как часто людям удаётся загрузить картинку, текст или видео
🟢 Задержка навигации. Это важно для удобства пользователей. Чтобы её измерить, они провели отдельный тест.
Люблю читать статьи от бигтеха, в них часто есть практики которые привычны для корпорации но не очевидны рядовым разработчикам. Мне показались эти метрики важными для формирования пользовательского опыта, но мало кто думает о них при запуске приложения стартапа новой соц. сети
В прошлом году появилось новое приложение Threads, которое стало самым быстрорастущим в истории, набрав 100 миллионов пользователей за пять дней. Сегодня число пользователей превышает 200 миллионов в месяц. Команда разработкт выросла с небольшой группы опытных инженеров до более чем сотни разработчиков. Перед командой стояла непростая задача, создать и сохранить ощущение быстродействия приложения для наилучшего первого пользовательского опыта. Команда выделила 4 метрики производительности, над которыми они сфокусировались:
Люблю читать статьи от бигтеха, в них часто есть практики которые привычны для корпорации но не очевидны рядовым разработчикам. Мне показались эти метрики важными для формирования пользовательского опыта, но мало кто думает о них при запуске приложения стартапа новой соц. сети
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3