Предотвратить исходные файлы из контейнера Sandbox приложения OS X для изменения с помощью перетаскивания или расширения Share?
У меня есть тип обуви (в отличие от основанного на документе) приложения OS X, в котором хранятся изображения в контейнере песочницы приложений.
Эти изображения могут совместно использоваться с помощью расширений Share (в форме NSURL) или экспортироваться с помощью перетаскивания.
Когда изображение используется совместно с редактором изображений (например, Acorn предлагает расширение для общего доступа) или отбрасывается в редакторе изображений, редактор изображений открывает файл из моего контейнера песочницы и теперь может изменять, переименовывать или удалять этот файл, что может привести к разным непостоянствам в моем приложении.
Во-первых, я был удивлен, потому что думал, что файлы в песочнице могут быть доступны только самому приложению. Но, похоже, это не так, когда я намеренно разделяю NSURL.
Итак, как я могу предотвратить, чтобы кто-то мог изменять файлы в моем контейнере для песочницы, предлагая им перетаскивание и разделять расширения?
- Я пытался не использовать NSURL, но NSImages, но многие Share Extensions не работают с NSImages, поэтому это не очень хороший вариант.
- Можно ли писать файлы защиты в песочнице?
- Должен ли я всегда копировать изображение во временное место, прежде чем предлагать его для совместного использования или перетаскивания (может быть медленным для больших изображений?)
Я рад услышать ваши предложения или узнать больше о проблеме.
Ответы
Ответ 1
Создайте закладку в NSURL.
Таким образом, пользователь может переименовать, переместить и удалить файл, но вы его заметили и знаете новое местоположение и имя и все еще можете получить доступ к файлу. Должен работать, даже если он находится вне вашей песочницы.
Таким образом, вы можете справиться с этим.
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/
Это одно из преимуществ работы с NSURL, а не с простой строкой пути.