면접 질문 : iOS에서 뷰와 레이어의 개념과 차이점에 대해 설명해보세요.
View와 Layer가 생겨난 배경
•
View는 UIKit 중 하나이고, Layer는 Core Animation 중 하나
•
그래픽을 그리려면 그래픽 하드웨어(GPU)에 접근하여 직접 그리면(OpenGL) 가장 렌더링 속도가 빠르지만, 코드의 양이 많은 단점이 존재한다.
•
코드의 양이 거대해지므로 애플은 이보다 고수준 프레임워크인 Core Animation과 UIKit 프레임워크를 만들었다.
•
UIKit은 Core Animation보다 한 단계 높은 수준의 API 이다.
UIView와 Layer 비교
UIView | Layer | |
위치 | UIKit에서 제공 | Core Animation에서 제공 |
스레드 | 메인 스레드 | UIKit과는 다른 별도의 스레드 사용 |
UIResponder | UIResponder의 서브클래스이므로 tap, touch 등의 gesture 인식 | UIResponder가 없기 때문에 tap, touch 인식 X |
기능 | CALayer를 wrapping 하고 있는 상태 | 복잡한 애니메이션과 퍼포먼스 측면에서 UIView보다 우수 |
범용성 | UIKit은 모바일에서만 동작
cf) AppKit은 Mac에서만 동작 | 모바일, Mac 모두 동일하게 동작 |