일전에 소개 해드린 TWUI를 살짝 분석한걸 얘기해볼까 합니다.
http://taehoonkoo.tistory.com/190
아래 코드는 TWUI Sample에서 긁어온 소스입니다.
TUINSView *tuiTableViewContainer = [[TUINSView alloc] initWithFrame:b];
[tableViewWindow setContentView:tuiTableViewContainer];
[tuiTableViewContainer release];
ExampleView *tableExample = [[ExampleView alloc] initWithFrame:b];
tuiTableViewContainer.rootView = tableExample;
[tableExample release];
현재 TUINSView와 ExampleView Class 의 Object를 생성하고 있는데,
여기서 ExampleView 는 TUIView 의 sub Class 입니다.
그럼 말하고자 하는 TUINSView 와 TUIView 의 object들인 셈이죠.
결론 부터 말하고 넘어가면, TUIView는 NSView의 sub class 가 아닙니다.
NSResponder의 SubClass 입니다.
이말인 즉슨, NSView에 바로 addSubView해서 사용할수 없는것이죠.
그래서 TUINSView라는 녀석이 있고, 이녀석이 Container역할을 해서
NSView와 TUIView 를 연결 시켜 주게 됩니다.
구현체를 좀더 살펴보니,
TUIView 가 가지고 있는 CALayer Object를 TUINSView의 layer에 addSubLayer하는 형식으로 되어 있습니다.
iOS 스타의 Animation을 구현하기 위해서, NSView자체보다 CALayer를 사용한 것같은데..
직관성이 상당히 떨어 지는 군요.
NSView를 subclassing 하고, 해당 NSView의 CALayer를 활용하는 방식도 가능했을텐데.. 말이지요.
"왜 이런 구조 여야만 했는가? " 에 대한 질문은 아직 깊이있게 살펴보지 않아서,.. ㅎㅎ
좀더 알게 되면 Posting하도록 하겠습니다.