2010-01-22 9 views
0

내가있는 UIScrollView 3 UIImages을 가지고 있고 나는 다음과 같은 방법으로 이러한 이미지를 초기화하고 있습니다 :있는 UIImage 할당 문제

데이터가있는 NSData가 URL 요청에서받은 것입니다
UIImage *dimage = [[UIImage alloc] initWithData:data]; 

. 이 후 이미지를 캐싱합니다. 메모리 할당을 확인할 때 3 개의 이미지가 각각 472KB를 차지하고 CoreGraphics 라이브러리의 "img_data_lock"이 할당을 요청했습니다. 디스크 캐시에서 해당 이미지의 크기를 확인할 때 각각 230Kb였습니다.

나는 더 많은 공간을 차지할 수 있습니다. 나는 나의 질문이 분명하기를 바랍니다.

답변

0

당신이보고있는 "디스크 캐시"는 확실하지 않지만 메모리와 디스크 사용량은 약하게 관련되어 있습니다. UIImage를 만드는 데 사용되는 데이터는 객체가 실제로 사용하는 데이터의 일부일뿐입니다. 이는 활성 객체가 객체를 만든 데이터보다 더 많은 메모리를 사용할 수 있음을 의미합니다.

UIImage는 메모리가 부족한 상황에서 이미지 데이터를 제거하므로 UIImage 객체의 크기가 그 존재 과정에서 크게 다를 수 있습니다.

+0

감사합니다. TechZen, 디스크 캐시는 장치의 "/Library/Cache"폴더를 의미하므로 임시 캐시로 사용합니다.
그래서 내가 할 수 있는게 아무것도 없다. – Nnp

+0

나는 문제가 있다고 생각하지 않는다. 디스크의 데이터 크기와 메모리의 개체 크기에는 거의 상관 관계가 없습니다. UIImage 객체는 데이터를 제거하지 않는 한 항상 데이터보다 커야합니다. 데이터가 UIImage 객체 자체가 아니라 그 객체라는 사실을 기억하십시오. UIImage 객체는 원시 데이터 외에 다른 정보를 저장해야합니다. 그 다른 정보는 그것을 데이터보다 크게 만듭니다. – TechZen

+0

감사합니다. TechZen, 저는 메모리에 대해 걱정했습니다.이 특정보기로 이동하는 동안 메모리가 1MB 증가했을 때 제 관심을 끌었습니다. 그래서 지금은 단지 메모리를 절약하기 위해 scrollview에서 시간당 3 개의 이미지만을 유지할 것입니다. – Nnp