0

我正在使用 NSSavePanel 让用户选择要保存到我的应用程序中的图像。一切正常,直到我启用应用程序沙盒和权利。选择已经存在的文件时会出现问题。我的代码是这样的:

// 创建一个指向我们的文件目标的 URL 和一个 CGImageDestination 来保存。CGImageDestinationRef imageDestination = CGImageDestinationCreateWithURL((CFURLRef)[savePanel URL], (CFStringRef)newUTType, 1, NULL); CGImageDestinationAddImage(imageDestination, cgimage, (CFDictionaryRef)metaData); const bool 结果 = CGImageDestinationFinalize(imageDestination);

它在选择新文件来保存图像时起作用,但是当我选择现有文件时,它会在现有文件之外创建奇怪的命名文件,并且无法覆盖目标 url 的内容。更糟糕的是,我没有得到任何错误回报,也无法检测到故障。这是 CoreGraphics 或我的代码中的错误吗?这个问题有什么解决方法吗?

4

1 回答 1

3

最后,我发现了核心图形调用的组合来覆盖在沙盒环境中工作的现有图像:CGDataConsumerCreateWithURL其次是CGImageDestinationCreateWithDataConsumer. 因此,在启用沙箱的情况下,它似乎CGImageDestinationCreateWithURL已损坏(至少在 中OS X Lion 10.7.1)。

于 2011-10-07T05:36:15.827 回答