2009-10-14 3 views
1

내가 알 수있는 한, 은 화면에 CALayer를 표시하기 위해 UIView (또는 UIView의 하위 클래스)가 필요합니까?UIView없이 CALayer를 표시 할 수 있습니까?

그런 다음 메모리를 절약하기 위해 CALayer를 사용하는 이유는 무엇입니까? 내가 보는 유일한 포인트는 CALayer에 여러 개의 하위 레이어를 추가 할 때입니다. 그런 다음 해당 하위 레이어는 프레젠테이션 트리, 렌더링 트리 등과 같이 모든 다른 트리 유형에 대해 3 번 복사되지 않습니다. 그게 맞습니까?

답변

3

CALayer을 다른 하위 레이어로 추가 할 수 있습니다. CALayer. 각 개별 레이어는 뷰에 의해 백업 될 필요는 없지만 계층 구조의 루트 레이어는 UIView으로 백업되어야합니다.

점은 매우 가볍고있는 CALayer의, 사본을 피하기 위해,하지만 UIViews의 사본을 피하기 위해하지 않거나,보다 구체적으로 UIView의 위로 그래픽 컨텍스트. 그것들은 상당히 많은 메모리를 차지합니다.

+2

실제로, 나는 UIViews가 CALayer보다 훨씬 많은 메모리를 차지한다고 생각하지 않습니다. Mac에서는 NSViews가 CALayers보다 확실히 무겁지만 UIView는 훨씬 가볍습니다. 내 성능 테스트에서 CALayers는 렌더링 할 때 UIView보다 약간 앞쪽으로 만 나오고 메모리 풋 프린트의 차이는별로 볼 수 없었습니다. –

+0

알아두면 좋은 정보. UIViews NSViews 같은 제한 사항으로 고통 받고 있다고 가정합니다. – Alex

관련 문제