Я запутался, что мне теперь нужно вручную удалять Observer в KVO? Когда я искал этот вопрос на веб-сайте, я обнаружил Нужно ли вручную удалять Observer в KVO этот вопрос. Поэтому я попытался добавить символическое исключение NSKVODeallocateBreak. Но ничего не произошло, когда я установил наблюдателя на nil
, не удаляя наблюдателя вручную. Затем я попытался посмотреть график отладочной памяти для NSKeyValueObservationInfo
.
Этот снимок экрана создается после добавления наблюдателя, и я пытаюсь обновить значение наблюдаемого свойства для тестов.
Тогда я снимаю наблюдателя. Это показывает, что что-то в памяти исчезло.
Затем я установил для наблюдателя ноль. Кажется, ничего не произошло.
После этого я снова инициализирую наблюдателя и снова добавляю наблюдателя. Это показывает, что что-то в памяти появилось снова.
Наконец, я просто установил для наблюдателя значение nil (без removeObserver). Это похоже на результат с removeObserver.
Итак, что-то изменилось в КВО? Или мой тест не верный?
Мой код вставлен здесь: https://gist.github.com/kingcos/36575befa94a464d7aff689daa34f5d6