델리게이트, 데이터소스 iOS

오늘은 델리게이트와 데이터소스에 대한 개념을 간단히 설명해볼까 합니다. 위의 그림은 동아리 스터디 자료로 만든 자료 일부인데 이 그림을 두고 설명하면 이해가 쉬울 거 같아서 글을 쓰게 되었습니다.

델리게이트와 데이터소스는 iOS 개발을 하면서 자주 쓰이는 패턴입니다. 위의 그림은 피커뷰를 예로 들고 있지만 가장 많이 사용되는 테이블뷰도 델리게이트와 데이터소스를 사용합니다. 델리게이트는 의미 그대로 해석하면 어떤 일을 위임하는 것으로 생각할 수 있습니다. 위의 예제에서 피커뷰는 인터페이스 빌더에서 뷰에 올려둔다고 바로 사용할 수 있는 UI 컨트롤이 아닙니다. 델리게이트를 통해서 피커뷰가 어떻게 동작할지 위임을 해줘야 제대로 동작할 수 있습니다.

다시 말해서 델리게이트는 사용자 인터페이스를 담당합니다. 델리게이트는 보통 해당 UI 컨트롤를 갖는 뷰 컨트롤러에 구현됩니다. 그러면 UI 컨트롤은 화면에서 실제로 어떻게 동작할지를 뷰 컨트롤러에게 물어보고 동작하게 됩니다. 피커뷰에서 델리게이트에는 titleForRow라는 메서드가 있는데 해당 열에 어떤 제목을 보여줄지 정하게 됩니다. 이를 통해서 피커뷰를 돌리게 되면 해당하는 열에 해당하는 알맞은 제목을 보여주게 됩니다. MVC 디자인 패턴에서 View를 담당하는 Controller라고 보면 됩니다.

데이터소스는 델리게이트와 비슷하게 데이터를 담당하게 됩니다. 데이터소스 또한 델리게이트처럼 해당 UI 컨트롤을 갖는 뷰 컨트롤러에 구현하게 되고, 따라서 델리게이트와 데이터소스는 일반적으로 같은 뷰 컨트롤러에 구현됩니다. 데이터소스는 해당 UI 컨트롤에 대한 데이터를 관리합니다. 해당 UI 컨트롤이 어떤 데이터를 가지고 있는지, 어떤 데이터가 선택되었는지 등을 처리합니다. 피커뷰에서 데이터소스는 numberOfComponentsInPickerViewnumberOfRowsInComponent라는 메서드가 있습니다. 각각 역할은 메서드의 이름과 같이 피커뷰에 몇 개의 컴포넌트가 있는지, 각 컴포넌트에는 몇 개의 열이 있는지 알려줍니다. MVC 디자인 패턴에서 Model을 담당하는 Controller이라고 보면 됩니다.

덧글

댓글 입력 영역


메모장

디지털과 감성, 그리고 공감.