IT_Programming/Objective-C · Swift · iOS

UIImageView 메모리 누적 문제 해결하기

JJun ™ 2015. 6. 30. 12:28



 출처: http://mildwhale.tistory.com/16




UIImageView 를 사용하기 위해서는 UIImage 를 이용하여 ImageView를 생성해야 합니다.
우리는 
일반적으로 이미지를 불러오기 위해 [UIImage ImageNamed:@""] 함수를 사용하게 됩니다.


위의 ImageNamed 함수는 Image를 메모리에 Cache합니다.
미리 캐시된 이미지를 사용하기 때문에 동일한 이미지를 불러오는 시간이 매우 단축됩니다. 
하지만 한번 캐시된 이미지는 이미지뷰를 Release 한다고 해도 메모리에서 해제되지 않습니다. 
때문에 서로 다른 여러개의 이미지를 읽어올 경우 많은 메모리가 사용되는 것을 볼 수 있습니다.


이 문제(?)는 ImageNamed함수가 아닌 다른 함수를 사용하여 해결할 수 있습니다.


기존

  UIImageView *img_Chapter = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@" main_000.png"]]


변경

 NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"main_000"] ofType:@"png"];

UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
UIImageView *img_Chapter = [[UIImageView alloc] initWithImage:image];
 
[image release];
image = nil;