Я использую делегат приложения в качестве файлового фильтра с открытой панелью. Это выглядело как слишком много проблем, поэтому я разделил код делегата панели на новый класс. При настройке моих объектов NSOpenPanel я назначаю их делегата объекту, который я alloc
/init
тут же назначаю.
Я использую -panel:validateURL:error:
, который срабатывает, когда я нажимаю кнопку «Открыть», чтобы, возможно, сказать, что данный файл не разрешен. Вместо этого я получаю сбой, EXEC_BAD_ACCESS
. Когда я добавил методы init
и dealloc
для вызова NSLog
, оба жизненных метода вызываются до открытия панели.
Есть ли какая-то необычная настройка, позволяющая локальному объекту выжить при вызове панели и ответе блока? Или мне нужно вернуться к какому-то глобальному экземпляру делегата?
-openDocument:
. Поскольку делегат не имеет состояния, а контроллер-документ является глобальным для приложения, я переместил делегат в общедоступное свойство контроллера-документа, чтобы любой оконный контроллер мог получить его по мере необходимости. 24.08.2014