我的根视图控制器中有一个数组,我需要在applicationDidEnterBackground
调用时保存(使用核心数据)。如何向委托中的根视图控制器的实例发送消息?
我正在考虑在将委托设置为根时给它一个对视图控制器的引用,但这感觉效率低下。有一个更好的方法吗?
我的根视图控制器中有一个数组,我需要在applicationDidEnterBackground
调用时保存(使用核心数据)。如何向委托中的根视图控制器的实例发送消息?
我正在考虑在将委托设置为根时给它一个对视图控制器的引用,但这感觉效率低下。有一个更好的方法吗?
在您的根视图控制器中注册以接收 ApplicationWillEnterBackground 通知。根视图控制器可以在收到此通知时执行保存。
您最初减少控制器之间耦合的本能是一个很好的本能。
1) 在您的 RootViewController .h 文件中,
+ (RootViewController *) sharedStore;
2) 在您的 RootViewController .m 文件中,
+ (RootViewController *) sharedStore
{
static RootViewController *myStore = nil;
if (!myStore) {
myStore = [[RootViewController alloc] init];
}
return myStore;
}
3) 转到您的 AppDelegate.m 文件并导入您的 RootViewController
#import RootViewController.h
4) 在您的 AppDelegate.m 文件中,转到 ApplicationDidEnterBackground 方法并键入:
[[RootViewController sharedStore] saveChanges];
5)在RootViewController中实现saveChanges方法。
AJ112 的回答是:
UIViewController
,这不是一个好习惯。UIApplication
,这是尽可能避免的事情。UIApplication
您可以从处理多任务处理所需的任何课程中观察到一些通知。检查这个 SO 问题的答案:
UIApplication
您可以在此处查看所有发布的通知: