Core Data NSInMemoryStoreType存储是否会将整个图存储在内存中,因此会受到系统内存的严重限制?

Rup*_*ert 3 macos cocoa cocoa-touch core-data ios

这似乎是一个显而易见的问题,但我的谷歌搜索没有给我一个明确的答案 - 显然,核心数据 NSInMemoryStoreType存储的想法是将整个图形存储在内存中,所以假设这将是一个合乎逻辑的假设对任何时候都可以存储的对象数量的严格限制 - 是这种情况吗?或者这个商店是否实现了某种智能磁盘缓存方法来克服这个问题?(如果有人有任何轶事证据表明它在iOS设备上的容量,最好是iPhone 4S以上,那也是受欢迎的).

Bry*_*yan 6

鉴于存在替代方案,NSBinaryStoreType其中数据被记录为存储在磁盘上,并且给出了名称,我认为可以安全地假设它NSInMemoryStoreType严格在内存中.

这个Apple文档说内存存储有"无需支持",但没有明确表示没有使用过.它还指出SQLite"并不要求整个对象图驻留在内存中",暗示某些其他类型的存储确实存在,但同样它并不明确.

看到这个帖子,Bill Bumgarner,可能是管理iOS运行时团队 Bill Bumgarner,谈论了如何使用这种类型的商店.

至于限制,一些答案是ios app最大内存预算,但你应该考虑一下你的程序对用户整体体验的影响.如果您声称拥有所有RAM,则iOS将终止其他进程,导致在来回切换时丢失上下文.iOS也会在他们切换到Twitter或电子邮件时杀死你的应用程序,如果它正在使用所有的RAM.因此,尽管看起来有多少可用,但要尽量保持在几十兆字节内,除非你的应用真是太神奇了,没有人会切换掉.