Центр уведомлений NSWorkspace не отправляет уведомления в разделе «Сборка мусора» - PullRequest
1 голос
/ 15 марта 2009

Я не уверен, что делаю что-то не так:

Я регистрируюсь для уведомлений рабочей области, используя этот фрагмент в awakeFromNib

[[[NSWorkspace sharedWorkspace] notificationCenter] 
    addObserver:self 
       selector:@selector(noteReceived:) 
           name:nil 
         object:nil];

селектор noteReceived: принимает один NSNotification * в качестве параметра. И у меня есть точка останова на этом.

При компиляции с отключенным GC он работает нормально, и я получаю все уведомления.

Когда соблюдается GC, я получаю только одно уведомление при запуске моего приложения, и все.

Я что-то упустил?

Решение:

Я что-то упустил. Это был просто быстрый тестовый проект, поэтому между контроллерами не было обычной связи, которая была бы в реальном приложении. Недостаточно создать экземпляр объекта в файле nib / xib и ожидать, что он не будет собран.

Однажды я сделал свой контроллер делегатом владельца файла (даже если он не реализует какие-либо методы делегирования), которого было достаточно для поддержания объекта в живых.

1 Ответ

2 голосов
/ 16 марта 2009

В GC NSNotificationCenter поддерживает только слабую ссылку на ваш объект наблюдения. Поэтому убедитесь, что ваш наблюдаемый объект находится где-то в иерархии объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...