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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🧑‍💻 Объявлены даты #WWDC24

В этом году WWDC пройдёт с 10 по 14 июня, начало в 20:00 GMT+3. А пока можно подписаться на новый канал

📹 AppleDeveloper - Apple, наконец, признали что youtube удобнее для потребления видео

🗓 Добавить в календарь WWDC чтобы не забыть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
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