事實證明,使用NSURLBookmarkCreationWithSecurityScope
不會導致10.7 - 10.7.2的問題。導致失敗的原因是調用-[NSURL startAccessingSecurityScopedResource]:
,這在10.7.3之前不被支持。因此,您需要使用OS檢查或respondsToSelector檢查將調用包裝到此方法(以及相應的停止方法)。我測試了書籤在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
}
我的猜測是你可能不能。這是他們的沙盒方法的一個缺點,因此增加了額外的機制。而且蘋果公司不是一個能夠支持東西的人... – Thilo
你確定這是失敗的原因嗎?我有一個應用程序(在MAS中)使用'[NSURL URLByResolvingBookmarkData:書籤選項:NSURLBookmarkResolutionWithSecurityScope relativeToURL:nil bookmarkDataIsStale:NO error:nil];'在10.6.8機器上工作得很好。 – Patrick
@Patrick - 它在10.7 - 10.7.2上正常工作嗎? (沙盒在10.6.8上不可操作,URL的解析可能會忽略任何由10.7.3+添加的安全信息 - 只是猜測) – CRD