6

重新启动应用程序后,我需要我的沙盒应用程序重新打开打开的文件。Apple在 NSURL 书签创建和解析方法中为安全范围的书签提供NSURLBookmarkCreationWithSecurityScope和选项。NSURLBookmarkResolutionWithSecurityScope但是,这些标志/选项仅适用于 10.7.3 或更高版本,并导致 10.7.3 之前的应用程序失败。

如何在沙盒应用程序中处理 10.6 到 10.7.3 的文件书签的保留/重新打开?

--

跟进:请在下面查看我的答案。该问题不是由使用引起的,NSURLBookmarkCreationWithSecurityScope而是由使用安全范围的书签启动和停止方法引起的。

4

1 回答 1

10

事实证明,使用NSURLBookmarkCreationWithSecurityScope10.7 - 10.7.2 不会导致问题。-[NSURL startAccessingSecurityScopedResource]:导致失败的原因是在 10.7.3 之前不支持的调用。因此,您需要使用 OS 检查或 respondsToSelector 检查来包装对此方法(以及相应的停止方法)的调用。我测试了书签在 10.7.1 中仍然有效,只要您确保不调用 start/stop。

以下是一些代码片段respondsToSelector,可以帮助遇到此问题的任何其他人:

使用它开始使用:

if([bookmarkFileURL respondsToSelector:@selector(startAccessingSecurityScopedResource)]) { // only supported by 10.7.3 or later
    [bookmarkFileURL startAccessingSecurityScopedResource]; // start using bookmarked resource
}

这停止使用:

if([bookmarkFileURL respondsToSelector:@selector(stopAccessingSecurityScopedResource)]) { // only supported by 10.7.3 or later
    [bookmarkFileURL stopAccessingSecurityScopedResource]; // stop using bookmarked resource
}
于 2012-08-31T00:07:44.930 回答