Нужно ли сейчас вручную удалять Observer в KVO? - PullRequest
0 голосов
/ 24 марта 2019

Я запутался, что мне теперь нужно вручную удалять Observer в KVO? Когда я искал этот вопрос на веб-сайте, я обнаружил Нужно ли вручную удалять Observer в KVO этот вопрос. Поэтому я попытался добавить символическое исключение NSKVODeallocateBreak. Но ничего не произошло, когда я установил наблюдателя на nil, не удаляя наблюдателя вручную. Затем я попытался посмотреть график отладочной памяти для NSKeyValueObservationInfo.

Этот снимок экрана создается после добавления наблюдателя, и я пытаюсь обновить значение наблюдаемого свойства для тестов.

adding an observer & test

Тогда я снимаю наблюдателя. Это показывает, что что-то в памяти исчезло.

remove the observer

Затем я установил для наблюдателя ноль. Кажется, ничего не произошло.

set the observer to nil

После этого я снова инициализирую наблюдателя и снова добавляю наблюдателя. Это показывает, что что-то в памяти появилось снова.

initialize the observer again, and add observer again

Наконец, я просто установил для наблюдателя значение nil (без removeObserver). Это похоже на результат с removeObserver.

just set the observer to nil

Итак, что-то изменилось в КВО? Или мой тест не верный?

Мой код вставлен здесь: https://gist.github.com/kingcos/36575befa94a464d7aff689daa34f5d6

...