2009-10-07 4 views
3

나는 UIImage와 관련된 메모리 문제에 대한 인터넷 검색 및 문제에 대해 이야기하지만 많은 도움이 진짜 도움이나 솔루션을 건너 왔어요.UIImage 메모리 문제가 캐싱의 becoz

우리가 -imageNamed:을 사용할 때 객체가 캐시되고 있으므로 initWithData:을 사용하는 것이 더 좋습니다. drawRect:UIGraphicsGetImageFromCurrentImageContext()을 사용하면 이미지가 캐시로 이동합니까? 다음 코드 또한

:

문서에서 이에 대한 아무런 언급이 없지만
CGImageRef tmp = CGImageCreateWithImageInRect(imageToCrop.CGImage, clippedRect); //pull the image from our cropped context UIImage *cropped = [UIImage imageWithCGImage:tmp];//UIGraphicsGetImageFromCurrentImageContext(); 
CGImageRelease(tmp); 

캐싱이 발생되어 있습니까? 캐시에 의해 소비되는 메모리를 어떻게 해제합니까?

+0

알고 싶습니다. 이것에 대해서도. UIImageView 배경을 가지고 있는데, 각 단추를 사용하여 [UIImage imageNamed : ...]를 사용하는 다른 이미지로 설정하는 버튼을 탭하여 스크롤합니다. 라이브 바이트는 계속 증가합니다. 이것을 올바르게 처리하는 방법은 무엇입니까? – GeneCode

답변

0

첫 번째 질문에 대한 대답은 확실하지 않지만 우려되는 두 번째 질문에 대해서는 UIImage의 CGImage 속성에 액세스 할 때 전체 이미지가 메모리에로드된다는 점에 유의해야합니다. 이 내용은 documentation for the CGImage property에서 참조됩니다.

사용 후 이미지 작업을 완료했다면 UIImage에서 릴리스 방법을 호출하여 메모리를 해제 할 수 있습니다. 계속 유지하면서 캐시에서 제거하려면 이미지를 디스크에 쓰고 해제 한 다음 새 이미지를 만드는 것 이외에 다른 방법을 생각할 수 없습니다. -initWithData:

관련 문제