문제

나는 uiscrollview에 여러 uiviews를로드하고 있으며 왜 그렇게 많은 메모리를 사용하는지 추적하려고합니다. 기기를 사용한 제거 과정 후, 나는보기의 배경색을 설정하면 메모리 사용량이 4 배 증가한다는 것을 발견했습니다.

배경색을 설정하지 않으면 메모리 사용량은 약 4.5meg입니다. 배경색을 RedColor 또는 ClearColor에 설정하자마자 메모리 사용량은 17meg로 점프합니다.

코드는 다음과 같습니다.

ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)];
thumbView.tag = aCounter;
thumbView.backgroundColor = [UIColor clearColor];

이로 인해 원인이 무엇인지 아는 사람이 있습니까?

내가 실제로 겪고있는 것은 배경을 깨끗하게하는 것입니다. 이 주위에 방법이 없다면, Uiview의 배경을 명확하게 설정하는 또 다른 방법이 있습니까?

도움이 되었습니까?

해결책

uiview의 모든 인스턴스 (및 그로부터 파생 된 클래스)에는 Uiview의 시각적 모양을 제공하는 관련 Calayer 객체 (레이어 속성을 통해 액세스)가 있습니다. Calayer는 자체 비트 맵을 가질 수 있고, 다른 Calayer 객체와 비트 맵을 공유 할 수 있습니다 (반사 방법). 또는 비트 맵이 없을 수 있습니다.

UIView가 다른 컨트롤을위한 컨테이너 역할을 할 때, 레이어와 관련된 비트 맵이 없으므로 메모리가 거의 사용되지 않습니다. 배경색을 설정하자마자 렌더링 할 것이 있도록 백업 비트 맵을 만들어야합니다. uiview 서브 클래스가 grawrect를 구현하여 일부 그래픽을보기에 그려두면 같은 일이 발생합니다.

전체 스크린 크기의보기에는 많은 메모리가 소비되므로 UiscrollView 기반 솔루션을 구현할 때 표시되는 뷰와 양쪽에만로드해야합니다. 미리로드를 생성하지 마십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top