Да, нужно.
При доступе к actor извне его изолированного контекста (в данном случае из глобального контекста), компилятор гарантирует потокобезопасность, требуя выполнения доступа асинхронно.
swift
В данном примере:
updateCache и cachedData выполняются внутри изолированного контекста DataCache и доступны синхронно внутри actor.cache.cachedData(forKey: key) и cache.updateCache(key: key, value: newData) из метода loadData (который находится вне actor контекста) требует ключевого слова await, что указывает на асинхронное выполнение и использование асинхронного executor. Executor actor отвечает за выполнение этих операций в порядке, гарантирующем эксклюзивный доступ к состоянию actor.clearCacheIsolated помечен как nonisolated, но даже к нему асинхронный вызов await cache.clearCacheIsolated() валиден извне actor, хотя и не обязателен для гарантии потокобезопасности в данном случае (поскольку метод не изменяет состояние actor).cache.clearCacheIsolated() из неизолированного контекста (как в attemptClearCacheDirect) приводит к ошибке компиляции, подтверждая необходимость асинхронного доступа.Таким образом, для безопасного взаимодействия с actor извне его контекста необходимо использовать асинхронные вызовы, которые выполняются с помощью асинхронного executor, управляемого самим actor.