#ios #key-value-observing
#iOS #наблюдение за ключом-значением
Вопрос:
Когда была выпущена iOS 14 beta 5, я начал получать сбой, классический Cannot remove an observer <XYZBinding 0x600000d6b750> for the key path "state" from <XYZEntryChat 0x7f960a77a900> because it is not registered as an observer.
.
Однако в базе кода ничего не изменилось, чтобы оправдать это, действительно, код, который давал сбой, не менялся в течение нескольких месяцев. Сбой сохраняется даже в официальной версии iOS 14.
Я исследовал и случайно обнаружил, что observationInfo
объект в XYZEntryChat, который должен содержать информацию о зарегистрированных наблюдателях, освобождается после создания без какого-либо вмешательства с нашей стороны.
Также случайно я обнаружил, что при переопределении - (void)setObservationInfo:(void *)observationInfo
метода или observationInfo
средства получения в классе XYZEntryChat проблема больше не возникает.
Во многих других классах, которые используют тот же базовый код для обработки привязок, проблема не возникает.
У меня больше нет информации о том, почему это происходит, это может быть ошибка iOS 14 или какое-либо изменение поведения в iOS 14, которое выявило неправильный поток использования в приложении. Я также исследовал, связано ли это с взаимодействием Objective-C / Swift, но у других классов, которые также используют / используются Swift, проблемы нет.
Кто-нибудь когда-либо сталкивался с таким поведением или имеет представление о том, что может быть основной причиной?