프로그래밍/아이폰,아이패드

iOS, Object-C를 이용한 아이폰/아이패드 개발에서 Delegate에 대한 이해-1. prolog

panpro 2011. 10. 30. 13:26

iOS에서 Object-C를 이용해 아이폰/아이패드 개발을 할 때 절대 빼 놓을 수 없는 필수 요소가 Delegate이다.

이게 없으면 개발을 할 수가 없을 정도인데, 블로그에서 delegate에 대해 찾아보면 이에 대한 정보가 정말 빈약하다.

그래서 이 연재를 만들기로 했다.

 

Delegate에 대해 이해하려면 꽤 많은 걸 알아야 한다.

 

우선 interface나 abstract class 에 대해 알아야 한다. 자바, C#, 델파이, C++, Action Script에서는 interface나 abstract class 라고 부르지만, Objective-C에서는 protocol이라고 부른다.

 

그리고 callback 에 대해서도 이해해야 한다.

Callback은 단순해서 좀 이해하기 쉬운데, 보통은 A 클래스에서 B 클래스의 메소드를 호출하는 식으로 이용하는 관계에서 그 반대인 B 클래스에서 A 클래스로 호출하는 것을 Callback라고 부른다. 예를 들어 우리는 보통 “Button” 에게 색과, 위치, 표시될 label 등을 설정해 주는 식으로 우리가 Button에게 call을 하는데, button이 눌리는 일이 발생하면 반대로 button이 우리에게 “나 눌려졌어요~” 하고 알려주는 것과 같은 거다. Win 32 프로그래밍을 할 때는 이걸 이벤트라 부르고, iOS의 Objective-C에서는 이런 처리를 Delegate라고 하는 것만 다르다고 하면 되겠다. 

C/C++에서는 이걸 함수 포인터를 이용해서 처리하고, 델파이에서는 이벤트로 처리한다. (이 방면에서는 델파이가 제일 나은 방법을 제공하는 듯 하다.) 자바는 interface / abstract class에 의해 처리하고, C#은 Objective-C와 같은 Delegate라는 이름으로 처리하는데 이름만 다르지 실제 처리하는 밑으로 내려가면 결국은 다 같은 놈들이다.

 

이런 것들을 다 이해해야 Delegate의 동작 원리에 대해 제대로 알 수 있다.

동작 원리를 제대로 밝힌 글들은 없어 내가 한번 써보려 한다.

이 글이 도움이 되셨다면 아래 손꼬락을 꼬옥 눌러주세요. 큰 힘이 됩니다. 그리고 댓글도 남겨주시면 더더욱 크~ㄴ 힘이 됩니다. ^^;