Я работаю над приложением, которое загружает серию изображений с веб-сервера и отображает их в приложении. Изображения размером около 615x725 с сервера, но будут отображаться только около 200x230 в приложении. Использование памяти в моем приложении сейчас очень высоко, и я получаю регулярные предупреждения о памяти. Они загружаются через этот набор вызовов:
Синхронный запрос ASIHTTPRequest (в фоновом потоке GCD) к NSData
[UIImage imageWithData:...]
[image forceLoad] (see below)
[UIImageView initWithImage:...]
[imageview setFrame:...]
Нужно ли мне делать что-то большее, чтобы убедиться, что моя память не перегружена излишне большими данными UIImage? Или UIImageView справится с этим для меня?
Метод принудительной нагрузки:
- (void) forceLoad{
const CGImageRef cgImage = [self CGImage];
const int width = CGImageGetWidth(cgImage);
const int height = CGImageGetHeight(cgImage);
const CGColorSpaceRef colorspace = CGImageGetColorSpace(cgImage);
const CGContextRef context = CGBitmapContextCreate(
NULL, /* Where to store the data. NULL = don’t care */
width, height, /* width & height */
8, width * 4, /* bits per component, bytes per row */
colorspace, kCGImageAlphaNoneSkipFirst);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
CGContextRelease(context);
}