我在了解新的Lion's Sandbox时遇到了一些问题。
我知道Lion包含一个受信任的守护进程Powerbox
,其工作是代表沙盒应用程序呈现和控制打开/保存对话框。
就像Code Signing And Application Sandboxing Guide所说:
好的。我使用以下代码进行了一些实际的测试:
NSSavePanel *savePanel = [NSSavePanel savePanel];
savePanel.delegate = self;
savePanel.directoryURL = ...;
savePanel.nameFieldStringValue = ...;
[savePanel beginSheetModalForWindow:self.window
completionHandler:^(NSInteger returnCode) {
/* the completion handler */
}];
奇怪的是,在完成处理程序之前称为NSOpenSavePanelDelegate
的方法无权访问文件系统上的文件。这样对吗?
但是,如果是这样,委托(delegate)人的方法(例如
panel:validateURL:error:
)将变得毫无用处!您能帮我详细解释一下应用程序和
Powerbox
之间的联系吗? 最佳答案
与苹果公司联系后,我可以确认Rob Keniger写道:NSOpenSavePanelDelegate
方法无法访问沙盒应用程序中的文件系统。
关于cocoa - NSSavePanel和沙盒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6844383/