2014-08-31 7 views
1

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

UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0); 
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Профилирование с использованием инструментов, я узнаю, что CGRaster Data несет ответственность за это? Как решить эту проблему?

ответ

0

Привет, постарайтесь поставить код на autoreleasepool.

@autoreleasepool 
{ 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0); 
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 
+0

Я тоже пробовал это. Это не работает. Я вернул изображение в другую функцию. Если я прокомментирую эту часть проблемы с памятью кода, это не произойдет. – guru

+0

http://stackoverflow.com/questions/19967460/uigraphicsgetimagefromcurrentimagecontext-memory-leak Используйте эту статью, пожалуйста, она швы ко мне, которую вы забыли освободить и ноль переменной. –

+0

Обнаружена проблема. Проблема заключается не в съемке снимка, я масштабировал изображение, сделанное с помощью imageWithCGimage: scale: orientation. После этого я изменил функцию масштабирования на другую, память значительно уменьшилась. – guru