0

我使用NSInMemoryStoreTypeforNSPersistentStoreCoordinator来维护内存中的实体和关系,因为我不想将其写入磁盘。

因此,由于核心数据对象引用仍在内存中,所以我计划在某些时候清理内存中的对象图,因为应用程序内存不断增加。

如何从内存对象图中删除/重置/删除整个核心数据实体和关系以清理应用程序内存使用情况?

在需要时是否有任何优化的方法来处理NSInMemoryStoreType和清理内存?

请注意:我的应用程序的部署目标是 iOS 8.0 及更高版本。所以清理 API 也应该可用于 iOS 8 目标。

谢谢!

4

2 回答 2

0

我找到了清理内存存储上下文的解决方法。此解决方法是从内存对象图中清理一些内存,而不是所有内容。

    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
    }

谢谢 Jon Rose:如果我必须删除所有实体,则会出现性能问题,因为我有更多实体。另外我不确定删除实体会立即清理内存。

谢谢 Sandeep Bhandari:PersistentContainer 适用于 iOS 10 及更高版本,我的应用程序应该支持 iOS 8。

上下文重置也不会对内存清理产生任何影响。如果有任何其他方法可以清理内存中的上下文/persistentStoreCoordinator,请告诉我。

谢谢!

于 2017-03-15T09:00:57.100 回答
0

只需像使用任何核心数据设置一样删除实体即可。

于 2017-03-15T07:34:30.583 回答