首先是 "applicationWillResignActive" 应用程序代理方法还是与该事件相关的通知?
首先是 "applicationWillResignActive" 应用程序代理方法还是与该事件相关的通知?
在我的应用程序委托中,当调用applicationWillResignActive:
方法时,我会保存(持久化)一个对象。我有一个视图控制器响应UIApplicationWillResignActiveNotification
并对先前提到的对象进行修改,但不保存(持久化)对象本身。
我想知道的是,这个更改是否会通过applicationWillResignActive:
方法进行持久化,还是我应该在视图控制器中显式保存以确保?
编辑:NSLog
测试结果是:第一个是委托方法,第二个是通知方法。
我不确定测试是否能保证每次顺序都一样,因为我不知道通知中心的工作原理。这就是为什么我在测试和给出结果之前发布了这个问题。
UIApplicationWillResignActiveNotification 通知在 applicationWillResignActive 方法之后发送,这可能导致在 applicationWillResignActive 方法内部无法获取到通知中的已改变的值。为了验证操作的顺序,可以在代码中插入一些 NSLog 行。
解决方法:
为了获取通知中的已改变的值,可以通过在通知触发时执行相应的操作来解决这个问题。可以在接收到 UIApplicationWillResignActiveNotification 通知后,立即执行与 applicationWillResignActive 方法中相同的操作,以确保获取到正确的值。
下面是一个示例代码,演示了如何解决这个问题:
- (void)applicationWillResignActive:(UIApplication *)application { // 在 applicationWillResignActive 方法中执行的操作 // ... } - (void)handleResignActiveNotification:(NSNotification *)notification { // 在接收到 UIApplicationWillResignActiveNotification 通知时执行的操作 // ... } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 注册 UIApplicationWillResignActiveNotification 通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResignActiveNotification:) name:UIApplicationWillResignActiveNotification object:nil]; return YES; } - (void)dealloc { // 移除 UIApplicationWillResignActiveNotification 通知的观察者 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil]; }
通过以上的代码,可以确保在 applicationWillResignActive 方法内部和接收到 UIApplicationWillResignActiveNotification 通知时都能获取到正确的值。