Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OSX沙箱问题_Macos_Cocoa_Sandbox - Fatal编程技术网

Macos OSX沙箱问题

Macos OSX沙箱问题,macos,cocoa,sandbox,Macos,Cocoa,Sandbox,我在App Store中有一个Mac应用程序,我希望在它成为强制性要求之前采用沙箱。我遇到了两个问题,希望在这里发布一些关于以下情况下最佳实践的见解: 在我的应用程序中,我使用NSOpenPanel提示用户加载专有文件格式。加载文件后,我的应用程序将对其进行解析,并将NSURL列表收集到本地文件。然后将这些本地文件传递给NSImage的initWithContentsOfURL:method。不幸的是,加载图像文件的行为会导致沙盒取消该操作。我理解,之所以会发生这种情况,是因为用户已明确授予我

我在App Store中有一个Mac应用程序,我希望在它成为强制性要求之前采用沙箱。我遇到了两个问题,希望在这里发布一些关于以下情况下最佳实践的见解:

  • 在我的应用程序中,我使用NSOpenPanel提示用户加载专有文件格式。加载文件后,我的应用程序将对其进行解析,并将NSURL列表收集到本地文件。然后将这些本地文件传递给NSImage的initWithContentsOfURL:method。不幸的是,加载图像文件的行为会导致沙盒取消该操作。我理解,之所以会发生这种情况,是因为用户已明确授予我的应用程序打开NSOpenPanel选择的文件的权限,但不允许打开我专有格式中引用的文件。我如何处理这种(据说相当普遍的)情况
  • 我的应用程序包中包含一个unix可执行文件,我希望使用NSTask执行该文件。考虑到脚本包含在我的包中,在沙箱下这合法吗
如果有人能澄清以上几点,我将不胜感激。

1)据我所知,NSURL对象包含以后重新访问文件所需的权限,因此,如果您使用的是硬编码路径,您可以将其替换为存档的NSURL对象。这也是假设用户在较早的时候在NSOpenPanel中选择了这些文件

2) 您可以运行NSTask,但它会继承主应用程序的权限

希望其他人能提供更多信息。我发现,特别是“应用程序沙箱”论坛非常有帮助,因为苹果员工经常会来这里。到目前为止,我发现沙箱是一个无法使用的烂摊子。

1)据我所知,NSURL对象包含以后重新访问文件所需的权限,因此如果您使用的是硬编码路径,则可以将其替换为存档的NSURL对象。这也是假设用户在较早的时候在NSOpenPanel中选择了这些文件

2) 您可以运行NSTask,但它会继承主应用程序的权限


希望其他人能提供更多信息。我发现,特别是“应用程序沙箱”论坛非常有帮助,因为苹果员工经常会来这里。到目前为止,我发现沙箱是一个无法使用的烂摊子。

首先简单一点:您可以使用NSTask运行帮助程序,它将继承应用程序的沙箱


那些URL:不容易/不可靠/根本不。有一种方法可以将NSURL保存到您有权访问的文件中,以便在应用程序的后续运行中重新加载并重新获得访问权,但是它被认为是脆弱的,不建议使用。阅读苹果开发者论坛,这是苹果公司承认的问题,他们正在“研究”;考虑到这一点,使用脆弱解决方案可能不值得付出努力-如果你真的想现在就破解某种可行的东西,请在开发者论坛上搜索脆弱解决方案。

简单一点:你可以使用NSTask运行你的助手,它将继承你应用程序的沙盒

那些URL:不容易/不可靠/根本不。有一种方法可以将NSURL保存到您有权访问的文件中,以便在应用程序的后续运行中重新加载并重新获得访问权,但是它被认为是脆弱的,不建议使用。阅读苹果开发者论坛,这是苹果公司承认的问题,他们正在“研究”;考虑到这一点,使用脆弱的解决方案可能不值得付出努力——如果你真的想现在就破解某种可行的东西,那么就在开发者论坛上搜索脆弱的解决方案