Swift Playground - идеальный инструмент для экспериментов со Swift. Почти всегда достаточно синхронного выполнения кода, но иногда хочется проверить что-то с асинхронным выполнением, например, для извлечения данных с сервера. Swift Playground по умолчанию выполняет код синхронно а при выполнении асинхронного кода мы видим вечное исполнение кода "Waiting for tasks to complete...". Чтобы это исправить - достаточно добавить
import PlaygroundSupport
и в коде вызвать:Все! Теперь мы можем тестировать асинхронный swift код и программа завершится корректно после выполнения всех асинхронных задач. Логика похожа на работу с DispatchGroup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Рабочая группа по популяризации разработки серверных приложений на Swift подвела промежуточные итоги и огласила цели на 2024 год:
Из того что меня удивило, результаты опроса использующих Swift на сервере:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Те кто делал 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 занимает все больше ниш и теперь очередь за микроконтроллерами! Сообщество энтузиастов во главе с одним из разработчиков компилятора создали демонстрационный репозиторий с рефференсными проектами для самых популярных плат. Есть даже поддержка Raspberry Pi Pico W. Еще одна идея для пет проекта 🤗. Что интересно, несмотря на все ограничения, по заверениям автора, со Swift нет проблем с производительностью, отсутствие сборщика мусора тут пригодилось. Все детали про видение будущего Swift для микроконтроллеров можно почитать тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5🤔1
Apple разрешила публиковать в App Store эмуляторы консолей c или без загрузкой игр.
Программы должны соответствовать законодательству == никакого пиратства
#appstore
Программы должны соответствовать законодательству == никакого пиратства
#appstore
❤12🎉5
Яндекс выпустил Yandex Mobile Ads SDK 7
🟢AdPod - Показ нескольких объявлений подряд в одном рекламном блоке
🟢EndСard - Интерактивный экран в конце рекламного объявления
🟢SKOverlay - Возможность скачать приложение сразу из рекламного объявления без перехода в App Store
Если еще не использовали SDK – есть примеры использования на github, а для миграции доступна инструкция по миграции со старой версии.
#яндекс #ads #монетизация
🟢AdPod - Показ нескольких объявлений подряд в одном рекламном блоке
🟢EndСard - Интерактивный экран в конце рекламного объявления
🟢SKOverlay - Возможность скачать приложение сразу из рекламного объявления без перехода в App Store
Если еще не использовали SDK – есть примеры использования на github, а для миграции доступна инструкция по миграции со старой версии.
#яндекс #ads #монетизация
👍7
Принято расширение размерности целых чисел
[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
GitHub
swift-evolution/proposals/0425-int128.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution
🤔5
Динамическая и статическая диспетчеризации - важные концепции в Swift. Динамическая диспетчеризация используется для классов и допускает полиморфизм во время выполнения, в то время как статическая диспетчеризация используется для структур, перечислений и конечных классов, обеспечивая более высокую производительность за счет оптимизации во время компиляции.
Понимание различий между динамической и статической диспетчеризацией может помочь вам принимать обоснованные решения при разработке Swift приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Пропустил эту важную новость, подтверждающую мои предположения - этот WWDC будет под флагом AI. Что тут важно:
Но в марте этого года Apple стала вести переговоры об использовании AI от Baidu. Это может означать как сложности с работоспособностью собственных моделей, так и использование более подходящих моделей под крупные рынки
Какие ваши мысли? Сможет Apple вступить в гонку и показать как надо было или так и будет в роли догоняющей со своей Siri? Я лично жду нативной интеграции LLM в Xcode 🤞️️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
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
WebKit
Optimizing WebKit & Safari for Speedometer 3.0
The introduction of Speedometer 3.0 is a major step forward in making the web faster for all, and allowing Web developers to make websites and web apps that were not previously possible.
👍15❤1
Как заставить ScrollView начинать снизу?
К моему удивлению, только в iOS 17 для SwiftUI появился нативный способ сделать коллекцию со скролом снизу defaultScrollAnchor. Этот подход часто требуется для экрана с сообщениями. Если вы работаете не в стартапе и вам нужно добиться похожего поведения до iOS 17, прийдется делать по-старинке:
К моему удивлению, только в iOS 17 для SwiftUI появился нативный способ сделать коллекцию со скролом снизу defaultScrollAnchor. Этот подход часто требуется для экрана с сообщениями. Если вы работаете не в стартапе и вам нужно добиться похожего поведения до iOS 17, прийдется делать по-старинке:
view.transform = CGAffineTransform(rotationAngle: (-.pi))
cell.transform = CGAffineTransform(rotationAngle: (-.pi))
👏9👍6
Вышла очень интересная статья про Accelerate от моего коллеги, которую мне удалось ревьювить перед публикацией, но коментариев от меня не было, так как написано все очень понятно. Если не знаете что это такое или пытались почитать но ничего не поняли - очень советую ознакомиться.
P.S. Ну и накиньте "Нравится" или коментариев, поддержим первую статью Игоря
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3👏3
Простая и понятная статья про реализацию пагинации поиска в приложении Medium. Меня больше заинтересовала даже не сама пагинации а простота архитектуры. Все по заветам Apple, данные вытягиваются прямо на уровне View, экран поиска реализован через Generic с разными комбинациями Presenter+Content. По-классике используется LCE подход
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1
Вышла еще одна статья, в ревью которой я принимал участие. Рефлексия в Swift не такая мощная как в Java, но как и во многих других языках программирования, есть возможность получать информацию о структуре объекта в Runtime. С его помощью можно просматривать содержимое любых сущностей, не зная о них абсолютно ничего.
Главное не забыть что рефлексия будет работать не при всех опциях компиляции
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7