Короче говоря:
Если я помещу NSTableView
со стилем выделения, установленным в SourceList, внутри NSPopover
, мое приложение вылетит, когда я закрою окно, содержащее всплывающее окно.
РЕДАКТИРОВАТЬ: я могу воспроизвести эту проблему в новом проекте. https://dl.dropboxusercontent.com/u/7968745/PopoverFail.zip
Длинная история:
У меня очень странная проблема. В настоящее время отладка с помощью NSZombie
, похоже, приводит к проблеме NSPopover
, но я не совсем уверен, потому что не могу воспроизвести ее в новом проекте.
У меня есть NSWindow
и его контроллер, который создает NSViewController
и его представление (все, что создано с помощью IB). В этом представлении есть кнопка, которая открывает всплывающее окно. Это всплывающее окно имеет простой NSTableView
со стилем SourceList. Поповер временный.
Если я открою всплывающее окно и сразу закрою окно, все в порядке. Если я открою всплывающее окно, сменю фокус на текстовое поле в окне (чтобы всплывающее окно закрылось), а затем закрою окно, приложение вылетит.
Включение зомби вижу следующий лог
*** -[NSPopoverFrame _subviewGeometryChanged:]: сообщение отправлено на освобожденный экземпляр 0x1005ce3d0
Если я профилирую с помощью NSZombie
, это стек:
Я могу повторять проблему каждый раз. Теперь я изменил стиль представления таблицы на обычный, и сбой больше не происходит (но я потерял полупрозрачный эффект на yosemite.
Я не знаю, в чем может быть проблема, и если это действительно комбинация просмотра таблицы / всплывающего окна
РЕДАКТИРОВАТЬ: Дополнительная информация: я использую ARC. Проблема возникает при освобождении окна. Я удалил весь код приложения, кроме того, который нужен для открытия окна. Сбой происходит и в этом случае.
РЕДАКТИРОВАТЬ: я могу воспроизвести эту проблему в новом проекте. https://dl.dropboxusercontent.com/u/7968745/PopoverFail.zip
Я также открою отчет об ошибке в Apple
NSTableView
освобождается? - person SevenBits   schedule 15.02.2015