ARC - обрабатываются ли распознаватели жестов и KVO, когда для UIViewController установлено значение nil? - PullRequest
2 голосов
/ 28 марта 2012

Мой вопрос довольно прост: очищаются ли распознаватели жестов и KVO, когда для UIViewController установлено значение nil?

У меня есть проект, в котором пользователь может создавать и удалять некоторые сложные экземпляры на основе UIViewController.Они хранятся в NSMutableArray.

Если я просто удаляю экземпляр из массива, а затем устанавливаю его равным nil (что, я думаю, излишне), все @ свойства объекта будут очищены (при условии, что нетдругие ссылки на них)?

РЕДАКТИРОВАТЬ Я получаю предупреждение (ошибка) ниже, когда я не управляю KVO - поэтому я предполагаю, что ответ «нет»

Экземпляр 0xce26d40 класса Track был освобожден, в то время как наблюдатели значения ключа все еще были зарегистрированы в нем.Информация наблюдений была утечка, и даже может быть ошибочно привязана к какому-либо другому объекту.Установите точку останова на NSKVODeallocateBreak, чтобы остановиться здесь в отладчике.Вот текущая информация наблюдения: (Контекст: 0x0, Свойство: 0x7530300> Контекст: 0x0, Свойство: 0x75320f0>

1 Ответ

3 голосов
/ 28 марта 2012

Объект владеет своими @properties (при условии, что они strong или retain).И представление имеет любые распознаватели жестов, которые добавляются к нему.Поэтому, когда объект освобождается, его свойства и распознаватели будут освобождены и освобождены, если им никто не владеет.

Наблюдатели ключевых значений и наблюдатели уведомлений должны быть вручную отписаны, прежде чем их освободят.

...