У меня был следующий код, который принимает 14 МБ или более данных изображения, закодированных в строке base4, и преобразует их в формат JPEG перед записью в файл в iphone.Это приводит к сбою моей программы, выдающему следующую ошибку: Программа получила сигнал: «0».предупреждение: check_safe_call: не удалось восстановить текущий кадр
Я настраиваю свою программу, и она может обработать еще несколько изображений, прежде чем ошибка появится снова.Моя кодировка выглядит следующим образом:
// parameters is an array where the fourth element contains a list of images in base64 >encoded string
NSMutableArray *imageStrList = (NSMutableArray*) [parameters objectAtIndex:5];
while (imageStrList.count != 0) {
NSString *imgString = [imageStrList objectAtIndex:0];
// Create a file name using my own Utility class
NSString *fileName = [Utility generateFileNName];
NSData *restoredImg = [NSData decodeWebSafeBase64ForString:imgString];
UIImage *img = [UIImage imageWithData: restoredImg];
NSData *imgJPEG = UIImageJPEGRepresentation(img, 0.4f);
[imgJPEG writeToFile:fileName atomically:YES];
[imageStrList removeObjectAtIndex:0];
}
Я попытался поиграться с UIImageJPEGRepresentation и обнаружил, что чем меньше значение, тем больше изображений он может обрабатывать, но это не должно быть так.Мне интересно, есть ли в любом случае, чтобы освободить память imageStrList сразу после обработки каждого изображения, чтобы оно могло использоваться следующим в строке.