본문 바로가기

독서노트

Chapter 1,2. 모델-뷰-컨트롤러

MVC패턴은 역사가 긴 패턴이다. 1970년대에 스몰토크언어와 함께 나온 패턴이라고 하니 그 당시 수학자들과 프로그래머들의 선견지명에 혀를 아니 내두룰 수 없다.

코코아 뿐만 아니라 MVC를 바탕으로 설계된 프레임워크는 무척 많다. 코코아는 MVC에 근본을 두어 프레임워크 전체를 설계했다. 전체 뿐만 아니라 작은 부분에도 MVC 패턴이 녹아들어가 있다.

일례로 아이폰의  UIView를 들 수 있다. 아이폰의 UIView 는 CALayer 를 가지고 있는데 이 객체는 UIView의 모델로 사용되어 진다. CALayer는 UIView의 현재 모습을 비트맵 이미지로 보관하고 있으며 UIView에 코어 애니메이션을 적용할 때 이 비트맵 이미지를 사용하여 부드럽고 효율적인 애니메이션을 구현한다.

이 내용을 생각한다면 아이폰에서 OpenGL을 사용할 때, 왜 CAEAGLLayer 를 사용해야 하는지 알 수 있다.

OpenGL의 역할은 3D정점 데이터를 바탕으로 렌더링 파이프라인을 통하여 3D로 표현된 2D비트맵을 만드는 것이다. 즉, UIView의 모델이 되는 비트맵을 생성하는 것이기 때문에 CALayer의 상속 클래스인 CAEAGLLayer를 사용하는 것이다.

UIView에 비트맵을 생성해 주는 방법은 Quartz2D와 OpenGLES 두 가지가 있다. 코어 애니메이션 기술은 위의 방법으로 생성된 UIView의 비트맵을 바탕으로 UIView의 모습을 부드럽게 애니메이션 해준다.

이렇게 보면 코어 애니메이션 기술에서 CALayer가 모델이며 UIView가 뷰, 코어애니메이션이 컨트롤이 되는 것이다.

보면 볼 수록 코코아 프레임워크는 MVC에 딱딱 맞게 아주 잘 설계되어 있다. 참 멋진 프레임워크다 :)