У меня зарегистрировано 2 наблюдателей. Один из них находится в appDelegate, а другой - в myViewController. Когда я нахожусь в myViewController, я просто ожидаю получить два уведомления: один из appDelegate, который выполняет какой-то метод глобально, другой из myViewController, который выполняет какой-либо другой метод. Но только тот, который вызван в appDelegate. Если я удалю наблюдателя в appDelegate, вызывающий наблюдатель в myViewController вызывается. Фактически, я могу просто использовать метод observer в appDelegate и узнать текущий контроллер представления и выполнить код метода в myViewController. Но я просто не хочу испортить appDelegate. Тот же код для обоих из них, но я удаляю наблюдателя в myViewController при вызове метода viewWillDisappear(). Есть идеи? Благодарю.NSNotification несколько наблюдателей, только один из них называется
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someMethod:)
name:@"someName"
object:nil];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"someName"
object:nil
userInfo:someUserInfo];
}
- (void)someMethod:(NSNotification *)notification
{
// gets called
}
myViewController
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someMethod:)
name:@"someName"
object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"someName"
object:nil];
[super viewWillDisappear:animated];
}
- (void)someMethod:(NSNotification *)notification
{
// not called
}
разместить код у используемого для размещения уведомления – CoolMonster
также, где вы регистрации/удаления ваших наблюдателей? –
Спасибо за ваши комментарии. Я редактировал сообщение. Взгляни. – Sukhrob