Как очистить граф объекта в памяти NSPersistentStoreCoordinator с NSInMemoryStoreType?

Я использую NSInMemoryStoreType за NSPersistentStoreCoordinator поддерживать сущности и отношения в памяти, так как я не хочу записывать их на диск.

Поэтому я планирую очистить граф объектов в памяти в определенный момент, так как память приложения продолжает увеличиваться из-за ссылок на объекты основных данных, все еще находящихся в памяти.

Как удалить / сбросить / удалить все основные объекты данных и связи из графа объектов в памяти, чтобы очистить использование памяти приложения?

Есть ли оптимизированный способ справиться NSInMemoryStoreType и очистка памяти при необходимости?

Обратите внимание: цель развертывания моего приложения - iOS 8.0 и выше. Поэтому API очистки должен быть доступен и для iOS 8.

Спасибо!

2 ответа

Просто удалите объекты так же, как и при настройке основных данных.

Я нашел обходной путь для очистки контекста хранилища в памяти. Этот обходной путь очищает часть памяти из графа объектов в памяти, а не все.

    if inMemoryManagedObjectContext != nil{

        if let stores = inMemoryManagedObjectContext.persistentStoreCoordinator?.persistentStores{

            for store in stores{

                do{

                    try inMemoryManagedObjectContext.persistentStoreCoordinator?.remove(store)

                }catch{

                    print("Cleanup InMemoryManagedObjectContext error;\(error)")
                }
            }
        }

        inMemoryManagedObjectContext = nil
    }

Спасибо Джон Роуз: Если мне придется удалить все объекты, это приведет к проблемам с производительностью, так как у меня будет больше объектов. Также я не уверен, что удаление сущностей немедленно очистит память.

Спасибо Sandeep Bhandari: PersistentContainer доступен для iOS 10 и выше, и Мое приложение должно поддерживать iOS 8.

Также сброс контекста не оказывает никакого влияния на очистку памяти. И, пожалуйста, дайте мне знать, если есть какой-либо другой способ очистки контекста в памяти /persistentStoreCoordinator.

Спасибо!

Другие вопросы по тегам