Я использую NSCollectionView
, где каждый NSCollectionViewItem
использует QLPreviewView
, чтобы получить рендеринг содержимого файла.
(Это попытка файлового браузера для изображений и других файлов с возможностью предварительного просмотра.)
Первоначально это работает нормально.
Однако, как только элементы коллекции используются повторно, я получаю ошибку утверждения (как в 10.13, так и в 10.14):
[QL] Assertion failure (unreachable code) - [… MyPreviewView activated … doc:[QLPreviewDocument …]] is already activated
По-видимому, прежде чем я смогу повторно использовать NSCollectionViewItem
, ранее использовавшийся QLPreviewItem должен быть каким-то образом переведен в состояние inactive. Как я могу это сделать?
Я пытался отправить сообщение close
экземпляру QLPreviewView
, но это не имеет значения.
Я также не получаю вызов Dealloc для моего подкласса QLPreviewView
, который предполагает, что на объект по-прежнему ссылается что-то еще, возможно, QLPreviewDocument
, который затем запутывается в изменении состояния.
Я сделал демонстрационный проект доступным на github: https://github.com/tempelmann/NSCollectionViewWithQLPreview
Чтобы проверить: запустите его, затем прокрутите вниз. При достижении элементов с 50 по 60 будет запущено утверждение.