重新启动应用后,我需要使用沙盒应用重新打开已打开的文件。 Apple通过NSURL书签创建和解析方法中的NSURLBookmarkCreationWithSecurityScope
和NSURLBookmarkResolutionWithSecurityScope
选项提供安全范围的书签。但是,这些标志/选项仅适用于10.7.3或更高版本,并导致10.7.3之前的应用程序失败。
如何在沙盒应用中处理10.6到10.7.3的文件书签保留/重新打开?
-
后续行动:请参阅下面的答案。问题不是由使用NSURLBookmarkCreationWithSecurityScope
引起的,而是使用安全范围的书签启动和停止方法。
答案 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
}