是否可以通过拖放或共享扩展来修改OS X应用程序的沙盒容器中的原始文件?

Mar*_*inW 21 macos cocoa drag-and-drop sandbox appstore-sandbox

我有一个鞋盒类型(与基于文档相对)OS X应用程序,它将图像存储在应用程序的沙盒容器中.

这些图像可以通过Share Extensions(以NSURL的形式)共享,也可以通过拖放方式导出.

当图像被共享到图像编辑器(例如Acorn提供共享扩展)或放在图像编辑器上时,图像编辑器会从我的沙箱容器中打开文件,现在可以更改,重命名或删除此文件 - 这可能会导致在我的应用程序中的各种不一致.

首先,我很惊讶,因为我认为,沙箱中的文件只能由应用程序本身访问.但是,当我故意分享NSURL时,情况似乎并非如此.

那么如何防止有人可以更改我的沙箱容器中的文件,同时还提供拖放和共享扩展?

  • 我尝试不共享NSURL但NSImages,但许多共享扩展不适用于NSImages,所以这不是一个好选择.
  • 是否可以对沙箱中的文件进行写保护?
  • 在我提供共享或拖放之前,我是否应始终将图像副本复制到临时位置(对于大图像可能会很慢?)

我很高兴听到您的建议或了解有关该问题的更多信息.

Axe*_*den 1

创建 NSURL 的书签。

因此,用户仍然可以重命名、移动和删除文件,但您注意到它并知道新位置和名称,并且仍然能够访问该文件。即使它在您的沙箱之外也应该可以工作。所以你可以处理这个问题。 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/

这是使用 NSURL 而不是使用简单路径字符串的好处之一。