NSSavePanel, CGImageDestinationFinalize и OS X sandbox

Я использую NSSavePanel, чтобы позволить пользователю выбрать изображение для сохранения в моем приложении. Все работало нормально, пока я не включил изолированную программную среду и права на приложения. Проблема возникает с выбором уже существующего файла. Мой код такой:

// Создаем URL для нашего файла назначения и CGImageDestination для сохранения. CGImageDestinationRef imageDestination = CGImageDestinationCreateWithURL((CFURLRef)[URL-адрес savePanel], (CFStringRef)newUTType, 1, NULL); CGImageDestinationAddImage(imageDestination, cgimage, (CFDictionaryRef)metaData); const bool result = CGImageDestinationFinalize(imageDestination);

Он работает при выборе нового файла для сохранения изображения, но когда я выбираю существующий файл, он создает файл со странным именем, помимо существующего файла, и не может перезаписать содержимое целевого URL. И что еще хуже, я не получаю ошибку в ответ и не могу обнаружить ошибку. Это ошибка в CoreGraphics или в моем коде? Есть ли обходной путь для этой проблемы?

1 ответ

Наконец, я обнаружил комбинацию основных графических вызовов для перезаписи уже существующего изображения, работающего в изолированной среде: CGDataConsumerCreateWithURL с последующим CGImageDestinationCreateWithDataConsumer, Ну, это похоже CGImageDestinationCreateWithURL сломан (по крайней мере, в OS X Lion 10.7.1) с включенной песочницей.

Другие вопросы по тегам