我想知道我的CoreData管理器与我的观点交互的方式是否正确/最好/最有效。
我使用标准单例模式(Apple示例)来容纳我的CoreData堆栈。它还包含用于Web服务和其他帮助程序方法的实用程序。
有一个带有2个viewControllers的UINavigation控制器,一个tableViewController和另一个以编程方式创建的viewController的viewController。
前两个viewControllers分别是一个设置(Web服务地址等)和登录。马上我跳到登录视图(第二个视图)。成功登录后,将推送tableView。在选择单元格时,将以编程方式创建视图并将其推送。
这些视图中的每一个都需要数据存储,因此在他们的viewDidLoad中,我正在抓住单例。
这是做事的方式吗?还有什么其他想法?导航控制器可以向所有嵌入的视图公开属性吗?
感谢。
答案 0 :(得分:0)
直到最近,我还使用了马特加拉格尔的合成单身人士来做同样的事情。
然而,最近我将我的项目转换为使用ARC,因此单例设置有所简化。现在我有:
static MMPersistentStoreController *sharedMMPersistentStoreController = nil;
+ (MMPersistentStoreController *)sharedMMPersistentStoreController {
if (sharedMMPersistentStoreController == nil)
{
sharedMMPersistentStoreController = [[self alloc] init];
}
return sharedMMPersistentStoreController;
}
我认为这是一种非常标准的方法。当然,它比在任何地方传递物体更好。
至于替代方案,我猜您可以synthesize
将其作为应用程序委托的property
,然后通过UIApplication
访问它。
使用前一种方法,它是由MMPersistentStoreController
类对象创建的静态实例。对于后者,实例是对象的ivar
,它只在您的应用程序中存在一次。