Я не уверен, что я делаю что-то неправильно здесь:
Я регистрируюсь для получения уведомлений Workspace, используя этот фрагмент в awakeFromNib
[[[NSWorkspace sharedWorkspace] notificationCenter]
addObserver:self
selector:@selector(noteReceived:)
name:nil
object:nil];
селектор noteReceived:
принимает один NSNotification *
в качестве параметра. И у меня есть точка останова на нем.
При компиляции с выключенным сборщиком мусора все работает нормально, и я получаю все уведомления.
Когда GC включен, я получаю только одно уведомление, когда мое приложение запускается, и все.
Я что-то упускаю?
Решение:
Я что-то упустил. Это был просто быстрый тестовый проект, поэтому не было обычного соединения между контроллерами, которое было бы в реальном приложении. Недостаточно создать экземпляр объекта в файле nib/xib и ожидать, что он не будет собран.
Как только я сделал свой контроллер делегатом владельца файла (хотя он не реализует никаких методов делегата), этого было достаточно, чтобы объект оставался живым.