개발을 하다 보면 구현해야 할 기능이 여러 가지이면서 상속 관계와는 상관없이 구현해야 하거나, 각기 다른 유형을 배열로 묶어야 할 때가 있습니다. 처음 이런 상황을 겪으면 상속을 이용해서 공통의 속성 또는 함수를 작성합니다. 처음 시작은 순조롭게 잘 되는 것 처럼 보이지만, 하위 유형을 상속으로만 만들어서 사용하다 보면 무언가 잘못되어가고 있다는 것을 깨닫습니다. 상속 깊이가 많이 차이 나는 하위 유형들에 공통의 속성 A를 추가하려고 할 때, 하위 유형들 공통의 부모 유형을 찾아서 속성을 추가하려고 할 것입니다. 공통의 부모 유형이 A 속성을 가지는 것이 타당하다면 그나마 다행이지만, A 속성이 터무니없는 속성이라면 오히려 유지보수에 악영향을 끼칠 것이 분명합니다. 어떤 목적으로 속성을 추가했는지도 불명..
이전 포스팅에서는 iOS의 핵심을 언급했습니다. 그렇다면 iOS의 테마를 실현하기 위해서는 어떤 것이 필요할까요? 사용자에게 콘텐츠를 보여 주거나 사용자가 상호작용 할 수 있게끔 하는 무언가가 필요합니다. 그것은 바로 모두 잘 알고 계신 프레임워크, UIKit입니다. 대부분의 iOS 앱은 UIKit의 구성 요소로 만들어집니다. UIKit은 iOS 앱 공통의 인터페이스 요소를 정의하는 프레임워크입니다. 쉽게 말하면 앱과 사용자를 연결하는 역할을 하는 기능들을 모아 놓은 것이라고 할 수 있습니다. UIKit을 구성하는 요소는 크게 세 가지 범주로 나눌 수 있습니다. 1. 바 (Bars) 주로 사용자가 앱을 여행하는 과정에서 현재 위치를 알려주는 역할을 수행합니다. 중요한 명령을 모아 놓기도 합니다. UINa..

iOS 개발자로서 협업을 하다 보면, iOS의 특징에 대해 설명해야 할 때가 있습니다. 소규모의 스타트업의 경우 iOS와 안드로이드를 한 디자인으로 개발하는 경우가 많습니다. 그러다 보면 어떤 플랫폼을 위한 인터페이스인지 알 수 없게 되고, 각 플랫폼이 추구하는 방향과는 거리가 멀어집니다. 예를 들어 안드로이드 형태의 디자인을 가진 iOS 앱을 들 수 있습니다. 안드로이드 디자인을 따라가는 iOS 앱의 이질감은 어쩔 수가 없습니다. 이런 이질감을 개선하기 위해 iOS앱 디자인의 방향을 제시하고 개선해야 하는데, 이럴 때 애플의 Human Interface Guidelines (HIG)를 알고 있다면 큰 도움이 될 것입니다. 애플은 맥, 아이패드, 아이폰 등 각각의 환경에서 사용자 경험을 일관적으로 유지시..