spu*_*eon 6 macos cocoa bookmarks sandbox app-store
应用程序重新启动后,我需要沙盒应用程序重新打开打开的文件.Apple使用NSURL书签创建和解析方法中的NSURLBookmarkCreationWithSecurityScope和NSURLBookmarkResolutionWithSecurityScope选项提供安全范围的书签.但是,这些标志/选项仅适用于10.7.3或更高版本,并导致10.7.3之前的应用程序失败.
如何在沙盒应用中处理10.6到10.7.3的文件书签保留/重新打开?
-
后续行动:请在下面看到我的答案.问题不是由使用NSURLBookmarkCreationWithSecurityScope而是使用安全范围的书签启动和停止方法引起的.
事实证明使用NSURLBookmarkCreationWithSecurityScope不会导致10.7 - 10.7.2的问题.导致失败的原因是-[NSURL startAccessingSecurityScopedResource]:在10.7.3之前调用哪个不受支持.因此,您需要使用OS检查或respondsToSelector检查来包装对此方法(以及相应的stop方法)的调用.我测试了书签仍然可以在10.7.1中工作,只要你确保不要调用开始/停止.
以下是一些使用的代码片段respondsToSelector,可以帮助其他任何运行此问题的代码:
使用它来开始使用:
if([bookmarkFileURL respondsToSelector:@selector(startAccessingSecurityScopedResource)]) { // only supported by 10.7.3 or later
[bookmarkFileURL startAccessingSecurityScopedResource]; // start using bookmarked resource
}
Run Code Online (Sandbox Code Playgroud)
并停止使用:
if([bookmarkFileURL respondsToSelector:@selector(stopAccessingSecurityScopedResource)]) { // only supported by 10.7.3 or later
[bookmarkFileURL stopAccessingSecurityScopedResource]; // stop using bookmarked resource
}
Run Code Online (Sandbox Code Playgroud)