首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSavePanel和沙箱

NSSavePanel和沙箱
EN

Stack Overflow用户
提问于 2011-07-27 12:35:57
回答 1查看 3.8K关注 0票数 8

我在理解新狮子座的时候遇到了一些问题。

我知道Lion包括一个名为Powerbox的可信守护进程,它的任务是代表沙箱应用程序显示和控制打开/保存对话框。

就像代码签名和应用沙箱指南说的:

每当在沙箱中运行的应用程序调用NSOpenPanel或NSSavePanel对话框时,AppKit都会自动要求Powerbox显示对话框,而不是直接显示面板。从开发人员的角度来看,在这些面板的使用方式方面不需要进行代码更改;这个过程是完全透明的。 用户选择一组文件或目录后,Powerbox将使用沙箱内核模块中的新功能来扩展调用应用程序的沙箱以允许访问所选文件。当应用程序代码查询面板中返回的URL或文件名时,它已经拥有访问这些文件的权限,并且几乎可以通过它已经使用的任何API继续使用这些文件。

好的。我使用以下代码进行了一些实际测试:

代码语言:javascript
复制
NSSavePanel *savePanel = [NSSavePanel savePanel];
savePanel.delegate = self;

savePanel.directoryURL = ...;
savePanel.nameFieldStringValue = ...;

[savePanel beginSheetModalForWindow:self.window
                  completionHandler:^(NSInteger returnCode) {
/* the completion handler */
}];

奇怪的是,在完成处理程序之前调用的NSOpenSavePanelDelegate方法无法访问文件系统上的文件。

这是正确的吗?

但是,如果是这样的话,委托的方法(如panel:validateURL:error: )就会变得毫无用处!

你能帮我更详细地解释一下应用程序和Powerbox之间的联系吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-29 09:43:50

与苹果联系后,我可以确认Rob所写的内容:NSOpenSavePanelDelegate方法无法访问沙箱应用程序中的文件系统。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6844383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档