Just reading the alert you get.
Did you try executing previewPanel(_ panel: QLPreviewPanel!, previewItemAt index: Int) in another thread ?
Nope. Just the code I cited for the panel and using QLThumbnailImageCreate for the images in the collection view items.
The problem is completely solved by setting the URL for the collection item from the collection view controller's data source, then calling QLThumbnailImageCreate on a background thread within the item, followed by updating the image view in the item on completion.
It's just weird that you can "abuse" QLThumbnailImageCreate in the main thread, as long as you never invoke a QLPreviewPanel
Thanks for your input anyway. Let's hope this thread is useful to someone else.