2015-11-04 51 views

回答

2

首先你访问UIApplication类。

这是一个单身人士。只有一个在应用程序启动时由可可触摸框架创建的实例。

然后通过调用类方法sharedApplication访问它的唯一实例。 “shared(classname)”是重新生成单例实例的方法的通用名称。另一个常见名称是“sharedInstance”。

然后您访问它的delegate。这遵循通常的委托模式,您在使用cocoa touch的iOS应用程序开发中经常看到这种模式。但这是你自己的一个非常特殊的代表。这是AppDelegate类。 当您让Xcode使用核心数据创建新的应用程序项目时,为了您的方便,它会在您的AppDelegate类中创建一些标准方法。

其中之一是managedObjectContext的(计算)吸气剂。

但是,UIApplication只知道它的委托作为实现UIApplicationDelegate协议的任何对象。核心数据的附加方法不为UIApplication所知。

这就是为什么您必须将.sharedApplication()的输出投射到名为AppDelegate的实现中。 as是Swift中的演员。

它被铸造后,你实际上可以访问getter managedObjectContext

就是这样。

+0

我也在寻找这个问题的答案。这真是一个很好的答案。我几乎清楚。但是我在这里混淆了“但是,UIApplication只将它的代理知道为实现UIApplicationDelegate协议的任何对象,UIApplication不知道核心数据的其他方法。你能否更详细地解释这一点?谢谢。 – Alamin

+1

@bir,委托被声明为'id 委托;'这就是你从'UIApplication.sharedApplication()'得到的。因此你需要将返回值转换为'UIApplicationDelegate'的实现类,这显然是'AppDelegate'。 –

相关问题