2012-10-07 9 views
5

Estoy leyendo sobre el sandboxing de la aplicación Mac y me pregunto qué ocurre exactamente cuando un usuario selecciona una carpeta en un NSOpenPanel o NSSavePanel. El “App Sandbox Design Guide” da el siguiente ejemplo:¿A qué tiene acceso una aplicación de espacio limitado de Mac cuando el usuario selecciona una carpeta?

When a user of your app specifies they want to use a file or a folder, the system adds the associated path to your app’s sandbox. Say, for example, a user drags the ~/Documents folder onto your app’s Dock tile (or onto your app’s Finder icon, or into an open window of your app), thereby indicating they want to use that folder. In response, the system makes the ~/Documents folder, its contents, and its subfolders available to your app.

No me queda claro lo que se entiende por el “contenido” aquí. ¿Esto se limita a ver qué archivos están en la carpeta sin poder leer lo que hay en esos archivos? ¿O simplemente significa que la aplicación podrá leer cualquier archivo que esté (recursivamente) dentro de la carpeta Documentos (para que pueda, por ejemplo, leer ~/Documents/Foo.txt y ~/Documents/Bar/Baz.txt)? ¿Y qué ocurre con las operaciones de escritura (escribir en un archivo existente, eliminar uno o crear un nuevo archivo o carpeta)?

Respuesta

5

La aplicación puede leer todos los archivos de la carpeta seleccionada, así como sus subcarpetas. Lo mismo es cierto para escribir, tanto para archivos nuevos como para sobrescribir los existentes. También es posible eliminar, así como la creación de una nueva carpeta, el movimiento de la carpeta dentro de los límites de la carpeta (u otras carpetas para las que tenga los derechos necesarios).

En pocas palabras, tiene la libertad de hacer lo que quiera dentro de esta carpeta y sus subcarpetas.

Advertencia: Cuando el salve el panel se abre y se nota Documents como objetivo, que podría ser ~/Library/Containers/<app signature>/Data/Documents. Puede cambiar la ubicación, pero la primera vez que me desconcertaron fue cuando el archivo se guardó con éxito pero no se encontró en el ~/Documents.

+1

Además, si tiene habilitados los marcadores, puede usar - [NSURL bookmarkDataWithOptions: includingResourceValuesForKeys: relativeToURL: error:] para guardar estos permisos para más adelante. Consulte https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16. – AriX

Cuestiones relacionadas