iOS Broadcast
3.4K subscribers
1.76K photos
85 videos
996 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
iOS Broadcast
🔨 Миграция с Combine на AsyncAlgorithms Очень необычная и глубокая статья. Автор статьи демонстрирует, как перенести реактивный Combine код на AsyncAlgorithms. Что приятно, автор разбирается в реактивном программировании и любит Combine, от этого статья раскрывается…
Очень интересный пример, почему Combine актуален даже в мире Swift Concurrency. При миграции на Swift 6 включаются проверки на потенциальные проблемы с многопоточностью и работа с NotificationCenter требует обеспечения явной потокобезопасности. Эту ошибку легко исправить с Combine, интеграция с NotificationCenter у которого давно реализована:
🔵Объединяем 3 паблишера в один поток данных Publishers.MergeMany
🔵Явно указываем что хотим получать ивенты в главном потоке receive(on: DispatchQueue.main)
🔵Не забываем про то что assign захватывает сильной ссылкой и либо добавляем [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
Замеряем производительность iOS

В прошлом году появилось новое приложение Threads, которое стало самым быстрорастущим в истории, набрав 100 миллионов пользователей за пять дней. Сегодня число пользователей превышает 200 миллионов в месяц. Команда разработкт выросла с небольшой группы опытных инженеров до более чем сотни разработчиков. Перед командой стояла непростая задача, создать и сохранить ощущение быстродействия приложения для наилучшего первого пользовательского опыта. Команда выделила 4 метрики производительности, над которыми они сфокусировались:
🟢FIRE. Задержка отрисовки изображений. Он показывает, сколько людей не смогли загрузить картинку
🟢TTNC. Время до завершения запроса. Показывает, как быстро загружается новая лента
🟢cPSR. Он показывает, как часто людям удаётся загрузить картинку, текст или видео
🟢Задержка навигации. Это важно для удобства пользователей. Чтобы её измерить, они провели отдельный тест.

Люблю читать статьи от бигтеха, в них часто есть практики которые привычны для корпорации но не очевидны рядовым разработчикам. Мне показались эти метрики важными для формирования пользовательского опыта, но мало кто думает о них при запуске приложения стартапа новой соц. сети
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🔵 Сосредоточьтесь не на задаче, а на проблеме, стоящей за ней
Очередная пятница, очередная статья "на подумать". Ситуация: продакт просит внедрить функции X, Y и Z в систему. Команда самоорганизуется и реализует проект. В итоге попадаем в ситуацию:
🔵Фича работает только для "счастливого пути"
🔵Новая фича разрабатывалась без учета доработок и сразу стала тех. долгом
🔵Пользователи считают функции бесполезными и не используют их

Чья вина такого исхода?
Причина, по которой произошел описанный выше сценарий "программист не виноват", заключается в том, что инженеры слишком сосредоточились на поставленной перед ними непосредственной задаче, в то время как им следовало бы сосредоточиться на проблеме, стоящей за этой задачей, задавая себе такие вопросы, как:
🟢Каков контекст этого запроса? Это более крупный проект, который включает в себя другие функции и задачи?
🟢Кто именно просит об этом? (Действительно ли это кому-то нужно?)
🟢С какой проблемой сталкиваются эти пользователи, что привело к этому запросу?
🟢Кто-нибудь пытался решить эту проблему раньше? Что они пытались сделать?
🟢Кто выиграет от выполнения этой задачи? Как они будут использовать это решение?

На мой взгляд, инженер любого уровня должен задаваться вопросом, а зачем я делаю эту задачу. Техническое совершенство кода не дает хороший пользовательский опыт, а продакт не всегда знает как можно решить ту или иную задачу. Я убежден что нужно подключаться к проработке задач и подходить к своей работе осознанно. Или это не проблема инженера?)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Реализуем UICollectionViewFlowLayout в SwiftUI
Гибкое размещение элементов в зависимости от их размера и дисплея не тривиальная задача, с которой мы встречаемся довольно часто. В UIKit это реализовывалось в UICollectionView через FlowLayout. В SwiftUI в iOS 16 появился протокол Layout. В статье детально разбирается реализация аналогичного Layout для тех у кого минимальный таргет ниже iOS 18. Для тех у кого выше, можно сделать еще проще. Так же в статье рассматриваются вопросы необходимости оптимизации производительности
👍2
🈸 Знакомимся с финалистами
Ежегодно, App Store Awards отмечаются самые лучшие и популярные приложения в App Store, а также их разработчики. 45 финалистов в 12 различных категориях.
На мой взгляд, AppStore "фичиринг" и особенно награды это неформальный способ коммуникации Apple с сообществом о том, что ценится в приложении. Что я заметил:
🟢Раздел App Privacy либо совсем пустой либо минимально заполнен
🟢Поддержка языков
🟢Поддержка iPhone, iPad, Mac, Apple Watch и Apple Vision

Есть исключения, но 2/3 критериев всегда удовлетворены.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM