将数据从后台线程写入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