Что на самом деле делает startAccessingSecurityScopedResource()?
Я создаю изолированное Mac-приложение, и я использовал NSOpenPanel, чтобы получить URL-адрес файла, и сохранил его в UserDefaults в качестве закладки безопасности. Когда я закрываю и перезапускаю приложение, я снова могу преобразовать этот блок данных в URL.
Документация говорит, что я должен позвонить startAccessingSecurityScopedResource()
и проверьте его возвращаемое значение. (Это возвращает true
когда я звоню.) Но если я не звоню, у меня все еще есть разрешенный URL, и у меня все еще есть разрешения для доступа к нему.
Что значит startAccessingSecurityScopedResource()
на самом деле делать? Может ли случиться что-нибудь плохое, если я не позвоню?
1 ответ
Пока ваше приложение получает доступ к файлам только в стандартных местоположениях ("Загрузки", "Музыкальные фильмы", "Изображения") и вы включили в свое приложение необходимые права доступа к программным файлам и папкам, вам не нужно хранить закладки безопасности для этих местоположений.
Но для других мест, которые должны оставаться доступными после перезапуска приложения, вы должны хранить закладки в области безопасности и вызывать startAccessingSecurityScopedResource()
до доступа. Если вы пропустите этот шаг, вы получите исключение, как только попытаетесь получить доступ к этому файлу.
startAccessingSecurityScopedResource()
делает ресурс закладки безопасности доступным для изолированной программной среды вашего приложения, предоставляя вам доступ к этому ресурсу.