SWIFTER | Блог про Swift
274 subscribers
4 photos
30 links
Swift для каждого на простом и понятном языке. Уроки программирования с интересными кейсами из реальных проектов, без воды и сложных терминов.
Download Telegram
Асинхронные скрипты на Swift

Да, на Swift можно писать скрипты и, используя некоторые хитрости, делать это достаточно эффективно. А с добавлением executableTarget в SPM задача стала еще проще.

Проблема возникает тогда, когда вы пытаетесь сделать скрипт асинхронным (например, получить или обновить какие-то данные в сети). В таком случае нужно заставить скрипт ждать выполнения асинхронной задачи и только после этого завершать работу. В этом нам поможет RunLoop. Обычно, когда мы пишем приложения под iOS или macOS, система сама контролирует процесс создания RunLoop, но для скриптов мы должны сделать это самостоятельно.

Сегодня я хотел бы поделиться небольшой, но полезной библиотекой SwiftScriptRunner, которая реализует своего рода мьютекс, предотвращая завершение программы. Механизм достаточно простой: счетчик, на основе которого мы стартуем бесконечный цикл while, в котором запускаем RunLoop.current на 0.1 секунды. Как только счетчик становится равен 0, скрипт завершает работу.

Source / SwiftScriptRunner
#shareLibrary #scripts #advanced