Есть ли потокобезопасный способ создания изображений PNG в iOS до версии 4.0? - PullRequest
2 голосов
/ 02 сентября 2010

Я почти уверен, что

UIImagePNGRepresentation([UIImage imageWithCGImage:imageRef])

является причиной случайных утечек памяти при выполнении в фоновом потоке (это вызывает утечки, которые прослеживаются до CGContextDrawPDFPage!).

Теперь, везде в Интернете говорят, что я должен использовать CGImageDestination, которая недоступна до iOS4. Есть ли способ для меня, чтобы закодировать растровое изображение в формате PNG, кроме импорта тяжеловесных библиотек PNG?

РЕДАКТИРОВАТЬ: Теперь это интересно. Для всего фонового потока, который создает PNG, я опорожняю пул автоматического выпуска каждые 10 сгенерированных PNG. Предупреждения памяти и сбой исчезают после добавления пула автоматического восстановления вокруг сохранения. Эти звонки требуют памяти?

NSAutoreleasePool* savePool = [[NSAutoreleasePool alloc] init];

NSData* imageData = UIImagePNGRepresentation([UIImage imageWithCGImage:imageRef]);
[imageData writeToFile:savePath atomically:NO];

[savePool drain];

1 Ответ

0 голосов
/ 06 сентября 2010

На практике

UIImageXXXRepresentation([UIImage imageWithCGImage:imageRef])

кажется достаточно потокобезопасным. Просто обратите внимание на использование памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...