Попробуйте сохранить изображение в фоновом режиме

Я пытаюсь вызвать UIImagePNGRepresentation в отличие от основного потока, но я получаю только исключение EXC_BAD_ACCESS.

Вот код

UIImage *imageToSave = [UIImage imageWithCGImage:imageRef];

dispatch_queue_t taskQ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(taskQ,
               ^{
                   NSData *binaryImage = UIImagePNGRepresentation(imageToSave);

                   if (![binaryImage writeToFile:destinationFilePath atomically:YES]) {
                       SCASSERT(assCodeCannotCreateFile, @"Write of image file failed!");
                   };
               });

Исключение происходит при попытке получить доступ к переменной imageToSave.

EDIT: I want to save OpenGL sceene to PNG file, tВот код of whole function

- (void)saveImage:(NSString *)destinationFilePath {

NSUInteger width  = (uint)self.frame.size.width;
NSUInteger height = (uint)self.frame.size.height;

NSUInteger myDataLength = width * height * 4;

// allocate array and read pixels into it.
GLubyte *buffer = (GLubyte *)malloc(myDataLength);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

// gl renders "upside down" so swap top to bottom into new array.
// there's gotta be a better way, but this works.
GLubyte *buffer2 = (GLubyte *)malloc(myDataLength);

for (int y = 0; y 
0
nl ja de
это работает, когда вы находитесь на главной теме?
добавлено автор tiguero, источник
проверьте, не является ли ваше изображениеToSave нулевым?
добавлено автор spider1983, источник
Я использую ARC, imageToSave не ноль. Это объект UIImage. Я проверил
добавлено автор kraag22, источник
Вы используете ARC или нет?
добавлено автор Atif, источник

1 ответы

оставьте вызов CGImageRelease, потому что UIImage не сохраняет CGImageRef

see imageWithCGImage and memory

1
добавлено
да, именно так. Когда я переместил весь код освобождения после «// освободить ресурсы» внутри dispatch_async , он сработал. Спасибо за помощь
добавлено автор kraag22, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.