Mos*_*she 16 design-patterns core-data objective-c
有哪些技术原因没有单独一个类来管理我的核心数据?我现在正在尝试做出决定,如果我应该删除所有样板核心数据代码并在单例中重新实现它.
Tec*_*Zen 15
Xcode模板中应用程序委托中的样板代码在功能上实现为单例.应用程序对象是一个单例,它只维护一个委托对象,因此您只有一个Core Data堆栈实例,并且由于应用程序对象是普遍可访问的,因此您也可以始终访问应用程序委托.
但是,即使只适用于具有一个持久存储的简单应用程序,其中所有上下文都使用该存储.在更复杂的应用程序中,您可能有多个商店或上下文,因此单身人士很快变得过于臃肿.
单例通常不会为隐藏或保存重复编码带来太多复杂性,因为与Core Data有关的大部分编码都在控制器层中,您将模型链接到视图/接口.由于该逻辑通常是每个视图的自定义,因此您无法将其实际存放在单例中.
我过去曾经使用过单身人士,但最终他们通常比他们的价值更麻烦.
ImH*_*its 15
在决定单身人士是否适合您时,有两个重要的考虑因素(注意这些不是唯一的两个):
穿线
单身人士很方便,但如果你的应用程序使用多个线程,你可能会想写这样的东西:
[[CDSingleton managedObjectContext] executeFetchRequest:someFetch];
//later on a background thread you might write
NSManagedObject *object = [[CDSingleton managedObjectContext] objectWithID:objectID];
Run Code Online (Sandbox Code Playgroud)
在此之后不久,您的应用程序将崩溃,因为您访问了可能在其他线程的主线程上创建的managedObjectContext.
内存使用情况
单身人士永远不会消失,这就是单身人士的观点.因此,他们也从不自愿地释放他们消耗的资源.在CoreData的情况下,这意味着托管对象上下文将继续在内存中保存托管对象,直到您调用-reset或-save:.
如果您的应用使用大量数据,这可能会很糟糕.
归档时间: |
|
查看次数: |
7913 次 |
最近记录: |