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
) с включенной песочницей.