將數據從後臺線程寫入NSPasteboard對象是否安全?我似乎無法在任何地方找到明確的答案。我認爲這個假設是數據將在拖動開始之前寫入剪貼板。NSPasteboard是否線程安全?
背景:
我有一個從Evernote獲取數據的應用程序。當應用程序第一次加載時,它獲取每個音符的元數據,但不是音符內容。筆記存根然後列在大綱視圖中。當用戶開始拖動筆記時,筆記被傳遞到後臺線程,後臺線程處理從Evernote獲取筆記內容。讓主線程阻塞直到獲得數據會導致顯着的延遲和糟糕的用戶體驗,所以我有[outlineView:writeItems:toPasteboard:]
函數返回YES
,而後臺線程處理數據並調用主線程將數據寫入粘貼板對象。如果在用戶將筆記放在某個地方之前筆記內容被傳輸,那麼一切都很完美。如果用戶在處理數據之前在某個地方放下筆記......那麼,所有東西都會永久封鎖。僅僅讓後臺線程將數據寫入粘貼板是否安全?
+1,優秀的答案。 – 2010-05-09 01:45:08
謝謝!這個應用程序是針對10.5構建的,因此NSPasteboardWriting協議不存在。我會嘗試一下粘貼板:provideDataForType:方法。我認爲現在不會太困難。 – 2010-05-09 13:57:42