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





Попробуйте понаблюдать за другим объектом, а не за
self.