У меня есть этот viewDidLoad
код:Посмотреть контроллер не вынимая Notification Center наблюдателя
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(messageReceived:)
name:@"messageReceived"
object:nil];
}
Этот вид управления является одним из UITabBarController
. Каждый раз, когда я иду на его вкладку, вызывается viewDidLoad
, но кажется, что [[NSNotificationCenter defaultCenter] removeObserver:self];
ничего не делает, и «messageReceived» регистрируется каждый раз при вызове метода.
Этот фрагмент кода из другого класса, который уведомляет:
[[NSNotificationCenter defaultCenter] postNotificationName:@"messageReceived"
object:nil
userInfo:nil];
вызывается только один раз, но, если, например, я хожу 3 раза в закладке контроллера представления, который наблюдающей и viewDidLoad
называется 3 раз, то его метод messageReceived:
также называют 3 раза ...
Что я могу потерять?
спасибо. Что происходит, если я хочу продолжать наблюдение, пока приложение находится в фоновом состоянии? Возможно ли/целесообразно обрабатывать это с помощью Центра уведомлений или использовать местные уведомления? – AppsDev
В этом случае вы, вероятно, захотите, чтобы ваш AppDelegate или какой-либо другой постоянный контроллер наблюдали за уведомлением вместо вашего контроллера вида. – ekscrypto
Спасибо. Тогда возникает другой вопрос: поскольку этот диспетчер представлений, о котором я говорю, загружается, всегда пользователь запускает приложение, и я включил режим фона для служб определения местоположения, не будет ли этот контроллер просмотра сохраняться, пока я продолжаю наблюдать для обновлений местоположения? – AppsDev