如果用户当前在我的编辑视图控制器中,我希望能够在用户关闭我的应用程序时保存更改.为此,我正在观察UIApplicationWillTerminateNotification
共享应用程序.在我的app委托中,我使用该applicationWillTerminate:
方法关闭并释放所有核心数据上下文.
我发现的问题是在任何观察者对通知作出反应之前applicationWillTerminate:
,app委托中的方法被调用.这意味着在我的编辑视图控制器有机会保存任何内容之前,我的核心数据堆栈已经发布并关闭!UIApplicationWillTerminateNotification
这通常是如何克服的,因为我看不到方法!
非常感谢,
迈克尔
编辑: 由于运行循环和通知的内部工作原理,第一种(基于通知的)方法可能不起作用。
如果您想坚持使用基于通知的架构,您实际上可以从 内部发布您自己的通知applicationWillTerminate:
。只需创建您自己的MyApplicationWillTerminate
通知,然后postNotification:
调用[NSNotificationCenter defaultCenter]
。然后让您的编辑控制器注册 的实例MyApplicationWillTerminate
而不是默认的UIApplicationWillTerminateNotification
.
另一种选择是让您的应用程序委托存储编辑控制器的实例(如果它可见),然后在applicationWillTerminate:
释放核心数据上下文之前保存新信息。不过,这会用额外的实例变量污染您的应用程序委托,因此它可能不是最佳解决方案。
最后一个想法:为什么不让应用程序保存用户所做的任何编辑?这样,您不必担心应用程序在编辑一条信息时中途关闭 - 编辑内容已保存,您只需按原样发布核心数据即可。(这可能不适合您;如果不了解更多有关您的应用程序结构和您正在编辑的数据的信息,我真的无法说。)
归档时间: |
|
查看次数: |
7413 次 |
最近记录: |