Вопрос

Есть ли способ определить, когда NSView будет освобожден?

Причина в том, что у меня есть несколько простых делегатов (например, делегат NSTextField, который обрабатывает -control:textView:doCommandBySelector:чтобы можно было вводить клавиши возврата/табуляции).Я хотел бы просто вставить этот объект делегата в наконечник, подключить делегатское соединение NSTextField и заставить его работать.

И это действительно работает, но делегат никогда не освобождается даже после освобождения NSTextField, с которым он связан, поэтому объект делегата протекает.

Я бы хотел, чтобы объект делегата мог определять, когда NSTextField освобожден, но я не могу придумать никакого способа сделать это, из-за чего мне приходится хранить отдельную ссылку на объект делегата от какого-либо другого контроллера. и вручную отпустите его в какой-то момент, который далеко не идеален.Есть идеи?

Это было полезно?

Решение

Ранее я внимательно рассмотрел это, и, похоже, нет никакого способа наблюдать за освобождением объекта.Я видел один способ сделать это в классе слабых указателей, но он включает в себя прокрутку, что может оказаться неприятным.Вот сайт: http://www.cocoadev.com/index.pl?WeakPointers

Объекты, созданные из файла пера, должны быть освобождены при освобождении владельца пера, если только они не сохраняются где-либо еще.Например, когда NSWindowController освобождается, он освобождает все объекты, которые были созданы при загрузке пера.Если ваши объекты делегата не освобождаются, возможно, это связано с тем, что они сохраняются в другом месте или существует цикл сохранения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top