Итак, вот что у меня есть:
- NSTableView с источником данных NSMutableArray
- FSEvents отслеживает папку, содержащую файл, содержащий данные для табличного представления (Использование SCEvents для проверки качества Objective-C)
- FSEvents запускает ту же функцию, что и кнопка перезагрузки в пользовательском интерфейсе. Эта функция обновляет табличное представление с новым источником данных на основе содержимого указанного файла через
setDataSource:
.
И вот что происходит:
- Если я внесу изменение в файл, сработает FSEvent и будет вызван метод обновления.
- Массив, который должно принимать табличное представление, действительно включает изменения, которые вызвали FSEvent.
setDataSource:
отправляется в NSTableView с правильным источником данных.
- Изменения не отображаются в табличном представлении!
Но тогда:
- Если я нажму кнопку обновления, которая запускает тот же метод, что и FSEvent, представление таблицы обновляется с новыми данными.
Я также пытался заменить FSEvent NSNotification (NSApplicationDidBecomeActiveNotification
), но происходит то же самое.
Кто-нибудь знает, почему это происходит?
Редактировать: Для пояснения, суть моего вопроса заключается в следующем: почему мой NSTableView перезагружается так, как должен при запуске нажатием кнопки, а не при запуске с помощью FSEvent или NSNotification?
Редактировать: Благодаря diciu я выяснил, что на самом деле все мои ссылки на пользовательский интерфейс указывают на 0x0 при срабатывании по событию, но затем имеют действительные адреса при срабатывании нажатием кнопки. Все эти объекты объявлены в IB, поэтому в моем коде не происходит их создание или распределение. Итак, мой вопрос сейчас: что я могу сделать, чтобы эти указатели не указывали на ноль?