Как iOS удалить несколько наблюдателей на одном и том же объекте - PullRequest
0 голосов
/ 16 апреля 2020

Когда я разработал поведение KVO,

    [A addObserver:B forKeyPath:kLAShopRuleObserveKey options:NSKeyValueObservingOptionNew context:nil];

И я удалил наблюдателя в [B dealloc] как:

[A removeObserver:B forKeyPath:kObserveKey];

Работает нормально.

Сейчас Я добавляю наблюдателя несколько раз:

    [A addObserver:B forKeyPath:kLAShopRuleObserveKey options:NSKeyValueObservingOptionNew context:nil];
    [A addObserver:B forKeyPath:kLAShopRuleObserveKey options:NSKeyValueObservingOptionNew context:nil];

Но я удаляю KVO только один раз в B:

- (void)dealloc
{

     [A removeObserver:self forKeyPath:kObserveKey];
}

, он отлично работает на iOS 11 и позже, но вылетает на iOS 10 и ранее, как он ведет себя по-разному

...