Ios 虚假的UIApplicationIDBecomeActivityNotification

Ios 虚假的UIApplicationIDBecomeActivityNotification,ios,objective-c,Ios,Objective C,我能够注册UIApplicationIDbecomeActivityfication并正确接收事件。但有时我会在应用程序仍在运行时收到这些通知。我怀疑内存问题会触发应用程序退出/恢复,但无法确认这是真的(我同时看到一次内存警告)。应用程序运行时调用这些方法的任何原因(无调用、无锁定等) 我正在注册这些通知: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActiveNo

我能够注册UIApplicationIDbecomeActivityfication并正确接收事件。但有时我会在应用程序仍在运行时收到这些通知。我怀疑内存问题会触发应用程序退出/恢复,但无法确认这是真的(我同时看到一次内存警告)。应用程序运行时调用这些方法的任何原因(无调用、无锁定等)

我正在注册这些通知:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActiveNotif:) name:UIApplicationDidBecomeActiveNotification object:nil];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActiveNotif:) name:UIApplicationWillResignActiveNotification object:nil];
(这在单例构造函数中使用dispatch_once完成一次)

相应的功能:

-(void)appDidBecomeActiveNotif:(NSNotification*)notif
{
  NSLog(@"appDidBecomeActiveNotif called");
}

-(void)appWillResignActiveNotif:(NSNotification*)notif
{   
  NSLog(@"appWillResignActiveNotif called");
}
以下是一些日志:

2013-04-11 09:28:11.401 App[1499:907] appWillResignActiveNotif
2013-04-11 09:28:13.505 App[1499:907] appDidBecomeActiveNotif

以下是文档对这些通知的说明:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActiveNotif:) name:UIApplicationDidBecomeActiveNotification object:nil];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActiveNotif:) name:UIApplicationWillResignActiveNotification object:nil];
UIApplicationIDbecomeactivityfication 当应用程序激活时发布。 应用程序在接收事件时处于活动状态。活动应用程序可以说是有焦点的。它在启动后获得焦点,当覆盖窗口弹出或设备锁定时失去焦点,当设备解锁时获得焦点

UIApplicationWillResignActivification 当应用程序不再处于活动状态并失去焦点时发布。 应用程序在接收事件时处于活动状态。活动应用程序可以说是有焦点的。它在启动后获得焦点,当覆盖窗口弹出或设备锁定时失去焦点,当设备解锁时获得焦点

那么,是否有任何覆盖窗口弹出,或者您是否锁定了设备或类似的东西

另外,为什么不使用AppDelegate中的方法来侦听这些事件呢

编辑


问题似乎是MapKit的弹出窗口要求用户使用它的位置。

这是文档对这些通知的说明:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActiveNotif:) name:UIApplicationDidBecomeActiveNotification object:nil];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActiveNotif:) name:UIApplicationWillResignActiveNotification object:nil];
UIApplicationIDbecomeactivityfication 当应用程序激活时发布。 应用程序在接收事件时处于活动状态。活动应用程序可以说是有焦点的。它在启动后获得焦点,当覆盖窗口弹出或设备锁定时失去焦点,当设备解锁时获得焦点

UIApplicationWillResignActivification 当应用程序不再处于活动状态并失去焦点时发布。 应用程序在接收事件时处于活动状态。活动应用程序可以说是有焦点的。它在启动后获得焦点,当覆盖窗口弹出或设备锁定时失去焦点,当设备解锁时获得焦点

那么,是否有任何覆盖窗口弹出,或者您是否锁定了设备或类似的东西

另外,为什么不使用AppDelegate中的方法来侦听这些事件呢

编辑


问题似乎是MapKit的弹出窗口要求用户使用它的位置。

没有覆盖窗口(我认为UIAlerts不被视为覆盖弹出窗口),没有传入消息、呼叫,没有“选择WiFi”窗口,没有任何接近该窗口的内容,而且我也没有锁定设备,我不使用AppDelegate方法,因为我需要其他地方的信息,而这正是应该的方法。但这是一个很好的观点,我将把NSLog语句也放在那里,以检查事件是否被触发。我实际上可以指出问题,不是警报,而是MapKit!这似乎是在地图显示时发生的。进一步调查确切的时刻……Apple Maps有趣的新“功能”。发现了这个有趣的流程图,很好地解释了这一点:没有覆盖窗口(我认为UIAlerts不被视为覆盖弹出窗口),没有传入消息、呼叫,没有“选择WiFi”窗口,没有任何接近该窗口的内容,而且我也没有锁定设备,我不使用AppDelegate方法,因为我需要其他地方的信息,而这正是应该的方法。但这是一个很好的观点,我将把NSLog语句也放在那里,以检查事件是否被触发。我实际上可以指出问题,不是警报,而是MapKit!这似乎是在地图显示时发生的。进一步调查确切的时刻……Apple Maps有趣的新“功能”。发现这个有趣的流程图很好地解释了这一点: