Приложение iOS для приложения WillEnterForeground на некоторое время зависло

Я добавляю эту функцию для публикации уведомления, когда приложение выходит на передний план:

- (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: функция будет вызывать удаленный веб-сервис, поэтому, когда приложение войдет на переднем плане, он застрянет на некоторое время.

Ответы на вопрос(1)

по которой он срабатывает дважды, в том, что вы снова запускаете его вручную.

Постскриптум Лучше использовать имя переменной UIApplicationWillEnterForeground вместо литерала NSString.

РЕДАКТИРОВАТЬ: Я понимаю, что теперь путаница происходит из-за того, что вы не знали, что это даже имя уже было занято. В качестве примечания для других людей, сталкивающихся с подобными проблемами, хорошей практикой является добавление префиксов к именам событий с префиксом проекта (т. Е. XYZEventNotification), чтобы избежать коллизий.

ВАШ ОТВЕТ НА ВОПРОС