Сбои в приложении Swift при одновременном использовании данных SwiftIOS

Программируем под IOS
Ответить
Anonymous
 Сбои в приложении Swift при одновременном использовании данных Swift

Сообщение Anonymous »

У меня периодически возникают сбои в моем приложении для iOS (Swift 6), которое в значительной степени зависит от параллелизма. У небольшого процента пользователей возникают неопределенные сбои без видимой причины.
Вот обзор моей установки:
  • приложение использует данные Swift для хранения данных.
  • Фоновые задачи выполняются с помощью Task.detached, а обновления пользовательского интерфейса управляются с помощью MainActor.run или
    DispatchQueue.main.async/sync.
  • Один ModelContainer инициализируется и сохраняется как глобальная переменная.
  • Экземпляры ModelContext создаются динамически для каждой задачи и не являются общими. Каждый контекст и связанные с ним модели изолируются
    для каждой задачи.
  • Для обеспечения логической согласованности используются различные методы синхронизации потоков.
Несмотря на соблюдение приведенных выше рекомендаций, я наблюдаю неопределенные сбои EXC_BAD_ACCESS, KERN_INVALID_ADDRESS, EXC_BREAKPOINT. В основном это связано с внутренними механизмами Swift Data.
Вопросы:

[*]Есть ли в этом подходе какие-либо недостатки?< /li>
В частности, проблематично ли использовать ModelContext в асинхронной функции (обеспечивая единый путь выполнения для каждого ModelContext) без включения его в ModelActor?

Любая информация или рекомендации очень приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ncurrently
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»