Я получаю предупреждение о давлении памяти для своего iPhone 4 со следующим сценарием: Мне нужно загрузить свое изображение на сервер и использовать Amazon s3. Я уверен, преобразование моего выбранного изображения в NSMutableData
с помощью следующего кода:Получение утечки памяти - преобразование NSData
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
CFDictionaryRef options = (__bridge CFDictionaryRef)@{(id)kCGImageSourceCreateThumbnailWithTransform: (id)kCFBooleanTrue,
(id)kCGImageSourceCreateThumbnailFromImageIfAbsent: (id)kCFBooleanTrue,
(id)kCGImageSourceThumbnailMaxPixelSize: [NSNumber numberWithDouble: maxSize],
(id)kCGImageDestinationLossyCompressionQuality: [NSNumber numberWithDouble:compressionQuality]};
CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(source, 0, options); // Create scaled image
CFStringRef UTI = kUTTypeJPEG;
NSMutableData *destData = [NSMutableData data];
CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)destData, UTI, 1, NULL);
if (!destination) {
NSLog(@"Failed to create image destination");
}
CGImageDestinationAddImage(destination, thumbnail,(__bridge CFDictionaryRef)metadata); // copy all metadata in source to destination
if (!CGImageDestinationFinalize(destination)) {
NSLog(@"Failed to create data from image destination");
}
if (!destination) CFRelease(destination);
CFRelease(source);
CFRelease(thumbnail);
return [destData copy];
Почему я получаю предупреждение памяти после 24-го изображения, когда я выполнить это в цикле?
iphone4 уже имеет очень мало памяти, это происходит в других устройствах, и вы открыты использовать другие методы, чтобы загрузить изображение на сервер? –
Спасибо, Сахеб, да, только на iPhone 4 перед этим стоит проблема. bcoz я пробовал с iPhone 6 и iPhone 5s также с количеством отсчетов изображений, вероятно, 50+ изображений, которые это происходит должным образом. Возможно ли исправление на уровне памяти – vetrivel