Mac App Store沙盒和处理10.7.3之前的安全范围书签

时间:2012-08-30 01:50:15

标签: macos cocoa app-store sandbox bookmarks

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

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

-

后续行动:请参阅下面的答案。问题不是由使用NSURLBookmarkCreationWithSecurityScope引起的,而是使用安全范围的书签启动和停止方法。

1 个答案:

答案 0 :(得分:9)

事实证明,使用NSURLBookmarkCreationWithSecurityScope不会导致10.7 - 10.7.2的问题。导致失败的原因是调用{10}之前不支持的-[NSURL startAccessingSecurityScopedResource]:。因此,您需要使用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
}

这是为了停止使用:

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