2010-09-03 1 views
1

Приложение, над которым я работаю, требует, чтобы я рисовал изображения до UIView. Эти изображения большие (некоторые - 1024x768), и я хотел бы быть уверен, что мой код чертежа не является субоптимальным. Мой drawRect метод в моем UIView выглядит следующим образом:Это лучший способ рисовать большие изображения в UIView?

- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(context, rect); 

    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 550); 
    CGContextConcatCTM(context, flipVertical); 
    CGImageRef shadowImage = [[UIImage imageNamed:@"someimage.png"] CGImage]; 
    CGContextDrawImage(context, CGRectMake(162, -174, 700, 700), shadowImage); 
    CGContextConcatCTM(context, flipVertical); 
} 

Существует другой рисунок, сделанный здесь, но я просто хочу, чтобы убедиться, что изображение чертежа код не будет вызывать проблемы, и я не имею пренебрегли вызовом важного метода или внедрили это неправильно.

ответ

3

Я обнаружил, что этот метод является неоптимальной из-за использования

[UIImage imageNamed:@"someimage.png"] 

Этот метод загружает изображение в память затем кэширует его для последующего использования. Поскольку изображения, с которыми я работаю, большие, и их несколько, использование этого метода может привести к чрезмерному использованию памяти.

Я написал short post с более подробной информацией.

+0

Ссылка не работает –

+0

@PooLaS Исправлено - приветствия! – Codebeef

+1

Итак, вывод заключается в использовании '[UIImage imageWithContentsOfFile: path];' вместо '[UIImage imageNamed: @" someimage.png "];' line :) –

Смежные вопросы