Jak*_*ake 1 cocoa-touch core-data uikit ios ios7
我正在尝试编写一个iOS笔记,这个应用程序对于大量笔记而言非常快,并且在没有阻止UI的情况下同步.(别担心,这只是一个学习项目,我知道iOS有十亿个笔记应用程序).我决定使用Core Data(主要是因为Brent Simmons关于Vesper的优秀帖子).我知道UIManagedDocument可以执行异步读取和写入,并且内置了很多功能,所以我想知道是否有任何信息对于一个相当简单的笔记应用程序来说会更快.我无法找到很多关于人们使用UIManagedDocuments的信息,而不是集中式,基本单例,持久性存储.它适用于1000多个文件吗?它会比NSManagedObjects数据库更快还是更慢?似乎我能找到的关于Core Data的大多数信息都面向使用NSManagedObject的人,因此任何有关在生产应用程序中使用的UIManagedDocuments的信息都会非常有用.在这一点上,我唯一能想到的就是以两种方式编写整个应用程序,将10,000个注释加载到其中,然后看看会发生什么.
更新
为了澄清,我不是在学习iOS开发和Objective-C,"学习项目"主要意味着我从未使用过Core Data,并且想学习如何编写真正高性能的Core Data应用程序.
Mar*_*rra 11
UIManagedDocument设计/打算用于基于文档的应用程序.UIManagedDocument每个文档一个实例.如果您没有构建基于文档的应用程序,那么您不应该使用UIManagedDocument.
人们喜欢的一切都UIManagedDocument可以通过直接使用Core Data堆栈轻松完成. UIManagedDocument抽象你远离你的持久层正在做什么.你真的不想要的东西.
如果您需要高性能的Core Data应用程序,则不希望使用它UIManagedDocument.你会遇到问题.它将随机执行并导致性能问题.
你正确地学习框架是远远不够的.
对于Vesper,这些不是文件; 它们太小了.将文档视为Word文件或Excel文件.大型复杂数据结构彼此100%隔离.
此外,无论您是否使用UIManagedDocument,您都将使用NSManagedObject实例. NSManagedObject,NSManagedObjectContext,NSPersistentStoreCoordinator是在核心数据的所有基本对象. UIManagedDocument只是一个顶层的抽象层.
最后,Core Data不是数据库.以这种方式思考会让你陷入困境.Core Data是一种可以持久存储到磁盘的对象模型,其中一种持久性格式恰好是SQLite.
UIManagedDocument是核心数据之上的抽象.要使用UIManagedDocument你实际需要学习更多的比,如果你只是使用的主要核心数据堆栈有关核心数据.
UIManagedDocument在内部使用父/子上下文.不明白吗?见上文.这也意味着你对它的保存要求是"在建议下",而不是当时和那里被保存.如果您不理解它的意义或者在它感觉不想保存时,这可能会导致意外的结果.
UIManagedDocument使用异步保存,最多可以请求保存.这并不意味着它现在要保存,也不意味着您可以轻松地停止并等待保存完成.你需要相信它会完成它.此外,它可能决定在不合时宜的时刻保存.
当您开始使用Core Data寻求性能提升时,您倾向于以非常特定的方式构建堆栈,以最大限度地提高应用程序的优势.这取决于应用程序,并且UIManagedDocument您的摘要很快就会受到限制.
即使在我构建基于文档的应用程序的情况下,我仍然不会使用UIManagedDocument.就在窗帘后面.
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |