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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
1️⃣2️⃣3️⃣4️⃣5️⃣SE-0424 Custom isolation checking for SerialExecutor

Принят пропоузал добавляющий возможность настроить логику проверки изоляции для серийного исполнения кода. Это еще один шаг к Swift 6 и безопасному параллелизму. Пропоузал описывает решение проблемы с проверкой изоляции при исполнении асинхронных методов внутри серийных очередей. Сейчас при исполнении асинхронной работы в серийной очереди проверка assumeIsolated фейлится, несмотря на отсутствие возможных проблем с многопоточностью.
В рамках пропоузала описывается что будет добавлен новый механизм сравнения исполнителей, который будет использоваться всеми API-интерфейсами для проверки изоляции в библиотеке параллелизма.
Реализовано через новую функцию в SerialExecutor:

protocol SerialExecutor: Executor {
func checkIsolation()
}

extension SerialExecutor {
public func checkIsolation() {
fatalError("Incorrect actor executor assumption, expected: \(self)")
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🐥 Как запустить асинхронный код в playground корректно?

Swift Playground - идеальный инструмент для экспериментов со Swift. Почти всегда достаточно синхронного выполнения кода, но иногда хочется проверить что-то с асинхронным выполнением, например, для извлечения данных с сервера. Swift Playground по умолчанию выполняет код синхронно а при выполнении асинхронного кода мы видим вечное исполнение кода "Waiting for tasks to complete...". Чтобы это исправить - достаточно добавить import PlaygroundSupport и в коде вызвать:
🟡needsIndefiniteExecution
🟡finishExecution()

Все! Теперь мы можем тестировать асинхронный swift код и программа завершится корректно после выполнения всех асинхронных задач. Логика похожа на работу с DispatchGroup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🐥 Итоги развития Swift на сервере (SSWG)

Рабочая группа по популяризации разработки серверных приложений на Swift подвела промежуточные итоги и огласила цели на 2024 год:
🟡Подготовка к выходу Swift 6
🟡Адаптация подхода со структурным параллелизмом
🟡Стандартизация подхода к созданию HTTP сервера
🟡Продвижение Swift для сервера

Из того что меня удивило, результаты опроса использующих Swift на сервере:
🟢Большая часть выбрала известный им язык для решения новой задачи (iOS разработчики)
🟢Значительная часть использует Swift до его официального релиза
🟢В разработке серверных приложений активно используется async/await
🟢SwiftPM является стандартом для управлением пакетами на сервере
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
📱 Создаем интерфейс для чаевых с ипользованием StoreKit 2, Xcode Previews, и удаленных ресурсов

Те кто делал In-App Purchase в цирке не смеется, однако с выходом StoreKit 2 жизнь iOS разработчиков значительно упростилась. StoreKit 2 поддерживает файлы конфигурации StoreKit для локальной разработки и мы можем тестировать свои покупки в приложении без подключения к сети и не отправляя их в App Store. Он также предоставляет готовые компоненты SwiftUI, для очень простой интеграции и даже возможностями настройки.

В статье использование StoreKit 2 рассматривается на примерах. Включая нативные StoreView и ProductView. Мне статья зашла, давно не сталкивался со StoreKit и новая реализация приятно удивила
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🐥 Swift пришел в микроконтроллеры!

Swift занимает все больше ниш и теперь очередь за микроконтроллерами! Сообщество энтузиастов во главе с одним из разработчиков компилятора создали демонстрационный репозиторий с рефференсными проектами для самых популярных плат. Есть даже поддержка Raspberry Pi Pico W. Еще одна идея для пет проекта 🤗. Что интересно, несмотря на все ограничения, по заверениям автора, со Swift нет проблем с производительностью, отсутствие сборщика мусора тут пригодилось. Все детали про видение будущего Swift для микроконтроллеров можно почитать тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5🤔1
Apple разрешила публиковать в App Store эмуляторы консолей c или без загрузкой игр.

Программы должны соответствовать законодательству == никакого пиратства

#appstore
12🎉5
Яндекс выпустил Yandex Mobile Ads SDK 7

🟢AdPod - Показ нескольких объявлений подряд в одном рекламном блоке
🟢EndСard - Интерактивный экран в конце рекламного объявления
🟢SKOverlay - Возможность скачать приложение сразу из рекламного объявления без перехода в App Store

Если еще не использовали SDK – есть примеры использования на github, а для миграции доступна инструкция по миграции со старой версии.

#яндекс #ads #монетизация
👍7
1️⃣2️⃣3️⃣4️⃣5️⃣SE-0425 128-bit Integer Types

Принято расширение размерности целых чисел [U]Int128 - это самый большой тип с фиксированным размером, который в настоящее время широко используется в коде "общего назначения". 128 бит будут добавлены в стандартную библиотеку, а в данный момент уже доступны в package.

.package(
url: "https://github.com/stephentyrone/swift-numerics",
branch: "int128"
)

Теперь нам доступно 170141183460469231731687303715884105727 🤔.

Есть идеи, зачем это может понадобиться в продуктовой разработке?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5
🐥 Разбираемся с динамической и статической диспетчеризацией

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

Понимание различий между динамической и статической диспетчеризацией может помочь вам принимать обоснованные решения при разработке Swift приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🧑‍💻 Apple лицензировала миллионы изображений с Shutterstock для своей AI модели

Пропустил эту важную новость, подтверждающую мои предположения - этот WWDC будет под флагом AI. Что тут важно:

🟢Shutterstock — компания, предоставляющая стоковые фотографии, в 2023 год библиотека из более чем 440 миллионов изображений
🟢Apple получит миллионы изображений и видео от Shutterstock
🟢Сделка прошла еще в конце 2022, после выхода на рынок ChatGPT
🟢Чип iPhone 16 может получить обновленный нейронный движок, который поможет работать AI на устройстве

Но в марте этого года Apple стала вести переговоры об использовании AI от Baidu. Это может означать как сложности с работоспособностью собственных моделей, так и использование более подходящих моделей под крупные рынки 🤔. В данный момент LLM модели работают с не английским языком через перевод, что значительно ухудшает качество.
Какие ваши мысли? Сможет Apple вступить в гонку и показать как надо было или так и будет в роли догоняющей со своей Siri? Я лично жду нативной интеграции LLM в Xcode 🤞️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
🌐 Оптимизация WebKit и Safari привела к бусту производительности на 60%
iOS разработчики часто в своей работе сталкиваются с веб технологиями, как минимум при интеграции WKWebView и SFSafariViewController. Команда WebKit за последние годы очень круто продвинулась в контексте поддержки веб стандартов. Чего стоит только поддержка PWA и нотификаций без сертификата разработчика. Команда WebKit на этом не остановилась и плотно работала над оптимизацией работы, в результате чего в реальном бенчмарке общий показатель Speedometer 3.0 улучшился примерно на 60% между Safari 17.0 и Safari 17.4.
Бенчмарк Speedometer является максимальным приближением к пользовательским действиям и лучшие результаты движка в нем напрямую влияют на реальный пользовательский опыт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151
Как заставить ScrollView начинать снизу?
К моему удивлению, только в iOS 17 для SwiftUI появился нативный способ сделать коллекцию со скролом снизу defaultScrollAnchor. Этот подход часто требуется для экрана с сообщениями. Если вы работаете не в стартапе и вам нужно добиться похожего поведения до iOS 17, прийдется делать по-старинке:


view.transform = CGAffineTransform(rotationAngle: (-.pi))
cell.transform = CGAffineTransform(rotationAngle: (-.pi))
👏9👍6
🔨Почему Accelerate — это не страшно

Вышла очень интересная статья про Accelerate от моего коллеги, которую мне удалось ревьювить перед публикацией, но коментариев от меня не было, так как написано все очень понятно. Если не знаете что это такое или пытались почитать но ничего не поняли - очень советую ознакомиться.

P.S. Ну и накиньте "Нравится" или коментариев, поддержим первую статью Игоря
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123👏3
📱 Статья на Medium про то как работает пагинация в приложении Medium
Простая и понятная статья про реализацию пагинации поиска в приложении Medium. Меня больше заинтересовала даже не сама пагинации а простота архитектуры. Все по заветам Apple, данные вытягиваются прямо на уровне View, экран поиска реализован через Generic с разными комбинациями Presenter+Content. По-классике используется LCE подход
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1