Mac OS X アプリ (Cocoa) で、NSDraggingSession. はNSDraggingItem、 protocol を実装するオブジェクトを使用してNSPasteboardItemDataProvider、ユーザーがデータをドロップしたときにデータを提供します。
画像を扱っているので、関連するタイプはNSPasteboardTypePNG、kPasteboardTypeFileURLPromise、kUTTypeFileURL、com.adobe.photoshop-imageおよびpublic.svg-imageです。これらの画像は遠隔地にあるため、ペーストボードに提供する前に、インターネットからダウンロードする必要があります。
- pasteboard(pasteboard:item:provideDataForType:)次のような方法でメソッドを実装します。
要求されたタイプが の場合、
kPasteboardTypeFileURLPromise貼り付け場所を取得し、将来ファイルが書き込まれる予定の場所を含む URL 文字列をペーストボードに作成して設定します。要求されたタイプが の場合、
kUTTypeFileURLファイルをダウンロードし、一時的な場所を指定して、ダウンロードしたファイルをその場所に書き込みます。次に、場所の URL 文字列をペーストボードに設定します。要求されたタイプが他のタイプの場合、ファイルをダウンロード
NSDataしてペーストボードにプレーンを設定します。
これらの操作はすべてメイン スレッドで実行されるため、解消したい遅延が発生します。
これらの操作をバックグラウンド スレッドで実行し、メイン スレッドに戻ってペーストボードに最終データを設定しようとしましたが、メソッドが前に終了するため、これは機能しません。
誰もそれを達成する方法を知っていますか?