9

我添加此功能以在应用程序进入前台时发布通知:

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[NSNotificationCenter defaultCenter] postNotificationName: @"UIApplicationWillEnterForegroundNotification" object: nil];
}

在我自己的课上:

- (void) handleEnterForeground: (NSNotification*) sender
{
    [self reloadTableData];
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnterForeground:)
                                             name: @"UIApplicationWillEnterForegroundNotification"
                                           object: nil];
}

但是 handleEnterForeground: 函数会调用两次,我不知道为什么。reloadTableData: 函数会调用远程 webService ,所以当应用进入前台时,会卡住一段时间。

4

1 回答 1

17

系统将自动调用该事件。它触发两次的原因是因为您再次手动触发它。

PS 最好使用变量名 UIApplicationWillEnterForeground,而不是 NSString 文字。

编辑:我现在意识到混乱来自这样一个事实,即您不知道这个偶数名称已经被使用了。作为对遇到此类问题的其他人的说明,最好在事件名称前加上项目前缀(即 XYZEventNotification)以避免冲突。

于 2012-05-18T07:33:21.130 回答