iOS Broadcast – Telegram
iOS Broadcast
3.46K subscribers
1.85K photos
86 videos
1.04K links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
⚡️ Apple без презентации обновила MacBook Pro - доступен чип M5
🟢До 3,5 раза быстрее, чем прошлое поколение в AI
🟢В 1,6 раза выше производительность графики
🟢Производительность SSD в 2 раза выше
🟢Время автономной работы до 24 часов
🟢12-мегапиксельная камера.
🟢от 1599$ в Америке за 14 дюймов
🟢16 RAM 10 ядер, 512 SSD в базе
🟢1999$ за 24 RAM и 1 TB SSD
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
🐥 Быстрое создание миниатюр с помощью CGImageSource
При работе с изображениями нам редко нужно показывать их в полном размере — чаще всего это миниатюры или превью. Использование для этого полностью загруженных изображений не эффективно, поэтому мы часто прибегают к кешированию миниатюр. Тестирование производительности:
🔴Создание миниатюры 12-мегапиксельного JPEG на Mac M4 Pro занимает 710 мс
🟢На симуляторе iOS с UIGraphicsImageRenderer это занимает 210 мс
🟢Функция UIImage.prepareThumbnail() для iOS уменьшает время до 130 мс
🟢На macOS такой функции нет. Но есть CGImageSourceCreateThumbnailAtIndex() - время создания миниатюры на macOS сократилось до 26 мс
🟢UIImage имеет две реализации миниатюр: одна для CGImage, другая для CGImageSource
🟢CGImageSource работает быстрее, чем CGImageCreateThumb()

Если в вашем проекте есть создание миниатюр, проверьте что используете эффективные методы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
🔨 WEDO 2.0 45300
Экспериментальная рубрика про проекты из реальной жизни. Долго думал, стоит ли делиться не iOS темами в канале и решил делиться с вами тем что связано с инженерией и программированием. Сегодня хочу поделиться первым опытом взаимодействия с набором для робототехники. Изначально это проект Lego, я купил аналог, который совместим с оригинальным ПО. Суть проекта была найти общее хобби с ребенком 6 лет. Я сам люблю программирование и конструкторы, а дочь хотела пойти на кружок робототехники. Мой опыт:
🟢Простой WYSIWYG редактор для создания программ.
🟢Обучающее приложение есть под iPad, Mac OS, Windows, Android
🟢Есть все необходимые конструкции для обучения: переменные, циклы, ветвления
🟢В комплекте кроме самого ресурсного набора (конструктора):
🟣CмартХаб-контроллер, подключается по Bluetooth, питается от батареек, имеет управляемый светодиод и 2 разъема
🟣Мотор
🟣Датчик наклона
🟣Датчик приближения
🟢Для старта в оригинальном приложении множество уроков с подробными инструкциями и открытыми заданиями, погружающие в основы доступных механизмов
🟢Очень интересно сделана интеграция с микрофоном и динамиком. IDE использует микрофон и динамик ноутбука, а не робота, что позволяет реализовать управление голосом и воспроизведение любых звуков
🟢Огромная библиотека с инструкциями для создания 583 роботов и механизмов
🟢За счет того что это Lego (или копия lego) можно использовать любой конструктор lego для роботизации, например моторизировать наборы серии technic
🟢Возможно подключить несколько хабов и моторов и взаимодействовать в рамках одной программы

Как вам подобная рубрика? 👍 / 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍245🔥1🤔1
📱 Проблема: Растущий объем View
По мере роста проектов SwiftUI элементы View становятся длинными и сложными. Простой экран быстро превращается в десятки вложенных VStack, HStack и пользовательских модификаторов.

Искушение: extension-ы и вычисляемые свойства
🔵Многие разработчики пытаются уменьшить размер кода, перемещая его части в расширения.
🔵Это улучшает удобочитаемость тела, но не решает проблему повторного использования и сопровождения.

Альтернативный подход: извлечение и повторное использование
🔵Извлекайте специальные SwiftUI View для каждой части с четкой ответственностью.
🔵Создавайте повторно используемые модификаторы View для согласованности и простоты тестирования.
🔵Используйте общие расширения для просмотра для часто используемых макетов.

Эмпирическое правило для хорошей архитектуры SwiftUI:
🔵Если элемент пользовательского интерфейса имеет четкое назначение и потенциал для повторного использования, извлекайте его.
🔵Если нет, сохраняйте его локальным или используйте вычисляемое свойство.
🔵Разбивайте код на чистые, композиционные и тестируемые компоненты для улучшения архитектуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86
🐥 Важный нюанс при работе с taskGroup
Интересная особенность работы taskGroup которая не вызывает удивления если уже знаешь о ней, но может привести к неожиданным результатам, если написать похожий код не сильно задумавшись. Суть особенности отлично представлена в примере:
🔵Сниппет кода имитирует сценарий использования withTaskGroup, метод fetchData заменяет сетевой запрос случайной длительности
🔵В taskGroup добавляются задачи по вызову метода fetchData
🔵В конце результат выполнения методов fetchData cсобираются в итоговый массив results
🔵results в том порядке, в котором они были возвращены задачами, а не в том порядке, в котором они были созданы
🔵Чтобы восстановить исходный порядок, требуется добавить индексы в кортеж
В целом, не на столько важно сохранять исходный порядок, важно понимать что порядок будет случайным и не стоит надеяться на сохранение исходного порядка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🔨 Combine – швейцарский нож iOS-разработчика. Или нет?
Несмотря на то что я чаще привожу примеры статей про Swift Concurrency, в сердечке все равно Combine. И вот отличная статья для всех, кто еще не использует Combine и сомневается в его полезности.
🔵Combine - швейцарский нож iOS-разработчика для работы с асинхронными событиями в декларативном стиле.
🔵Combine помогает разработчикам управлять потоками данных, избавляя от множества колбэков и ручного управления очередями.
🔵Combine состоит из трех сущностей: Publisher, Operator и Subscriber.
🔵Publisher генерирует значения или ошибки и отправляет их Subscriber.
🔵Operator фильтрует или комбинирует значения между Publisher и Subscriber.
🔵Subnoscription управляет передачей данных от Publisher к Subscriber и контролирует объем запрошенных данных.
🔵Subscriber является получателем данных от Publisher и обрабатывает их.
🔵Combine интегрируется в SwiftUI через @Published, @ObservedObject, @StateObject, .onReceive(_:) и @EnvironmentObject

Прелесть Combine в том, что его можно объяснить объяснить за несколько часов, за несколько дней по-настоящему освоить и больше никогда не быть прежним
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41👍1🤔1