'Delegate와'에 해당되는 글 2건

  1. 2010.06.29 delegate와 selector사용하기
  2. 2010.06.22 Delegate와 Protocol
아이폰어플개발정보2010. 6. 29. 18:21
delegate와 selector사용하기
iPhone에는 delegate는 MVC라는 디자인 패턴을 토데로 만들어졌다.
(사실 나도 책 어딘가에서 위가 디자인 패턴의 일종이라고만 들었고.. 정확히 어떤 디자인 패턴인지는 모르것다.)

delegate를 사용할때와 안할때가 있는데 차이점은 간단한다.
delegate패턴은 넘어오는 객체가 특정 메소드가 구현 되어 있을꺼야~ 라고 지정하는 것이고.

만약 id와 함께 SEL을 이용해서 메소드가 같이 넘어 오는 것은 단순히 함수 포인터와 그 함수 포인터의 인스턴스를 넘겨 받은 것이다. 

다시 말해서 delegate는 클래스의 인스턴스 메소드를 호출하기 위한 그냥 인스턴스에 지나지 않는다.

그리고 이것과 비슷하게 사용되는 것이 protocol인데 이것은 자바의 interface를 생각하면 딱 맞다.
자바의 interface는 미리 구현시 필요한 메소드를 지정해놓고 그 지정된 메소드를 기반으로 클래스가 작동하게 된다.
다라서 단지 하위 단에서 구현되어야할 필요한 함수의 목록을 적는 것이기 때문에 다중상속도 가능하다

마찬가지로 아이폰의 object-c도 같다.



착각했다.. ㅜㅡ




출처 : http://blog.naver.com/PostView.nhn?blogId=kerc&logNo=80106560672

'아이폰어플개발정보' 카테고리의 다른 글

XCode단축키 모음  (0) 2010.06.29
property 정리  (0) 2010.06.29
delegate와 selector사용하기  (0) 2010.06.29
GCC에러가 발생했을때..  (0) 2010.06.29
Code Sign Error이 발생할 때  (0) 2010.06.29
아이폰개발을 위한 서적 리스트  (0) 2010.06.29
Posted by 오늘마감

댓글을 달아 주세요

오브젝트C2010. 6. 22. 09:48
Delegate와 Protocol

프로토콜이란 클래스 A와 클래스 B와 같은 이름의 메소드를 각기 다르게 수행하는 한 가지 방법입니다. 

TV 리모컨으로 사운드 높낮이를 조정하는 화면이 케이블 방송과 공중파 방송 각각 TV 화면에 다르게 표시되는데, 리모컨의 사운드 조절 이벤트는 동일하지만, 현재 TV 수신 모드에 따라 TV와 케이블 모뎀의 사운드 조절 메소드 중에 어느 하나가 호출되기 때문입니다.

이처럼, 동일한 오브젝트 (리모컨)가 유발한 동일한 이벤트 (사운드 조절)에 대해 서로 다른 오브젝트들이 자기가 속한 클래스 메소드로 대응하는 것이 프로토콜의 역할입니다. 이 것이 가능하기 위해서는 공중파 수진 모듈 (주로 TV에 내장)과 케이블 수신 모듈 (주로 케이블 모뎀에 내장)이 리모컨이 발생할 수 있는 다양한 이벤트들에 대해 각기 어떻게 대응할 지 정의해 놓아야 합니다.

  • 리모컨 = Sender 오브젝트
  • TV와 케이블 모뎀 = Receiver 오브젝트
  • 리모컨이 발생하는 이벤트의 종류 목록 = 채널 변경, 사운드 변경 ... = 프로토콜
  • 각 이벤트에 대한 대응 = TV 클래스 메소드와 케이블 모뎀 클래스 메소드 각각

프로토콜을 가장 잘 활용하는 예가 AppDelegate를 포함한 Delegate 클래스와 오브젝트인데, 바로, 케이블 모뎀의 리모컨 대응 메소드들이 Delegate의 전형적인 예입니다. 리모컨의 작동 모드를 케이블 모뎀으로 설정하면, 리모컨에서 발생되는 이벤트들의 수신자 (= 동작을 수행할 오브젝트)가 케이블 모뎀이 되면서, 리모컨의 원래 오브젝트인 TV를 대상으로 케이블 모뎀의 클래스에 작성된 동작이 수행됩니다 (@implemenation 파일).

1. 리모컨의 케이블 버튼을 누르는 것은 리모컨이 발생하는 이벤트 수신자를 케이블 모뎀으로 지정하는 것인데, 이를 Delegate 지정이라 부릅니다.

2. 케이블 모뎀이 Delegate로 지정되어 리모컨 이벤트를 처리하더라도, 그 동작의 대상은 여전히 TV입니다. 따라서, Delegate란 TV가 해야할 일을 케이블 모뎀이 일정 부분 대신하는 것입니다.

3. 메뉴 보기와 같은 리모컨의 일부 버튼들은 TV가 지원하는 기능이 아니라, 처음부터 케이블 모뎀이 처리하도록 설계된 것들입니다. 즉, Delegate를 활용하면, 어느 한 오브젝트 클래스 (TV)가 처리할 동작들이 너무 복잡해 지는 것을 방지할 수 있습니다.

프로토콜이나 Delegate의 작동 원리는 컴퓨터 시스템이 발명되기 훨씬 오래 전부터 우리 일상 생활에 널리 이용되는 매커니즘이며, 인간이 지구에 나타나기 훨씬 전부터 세상을 움직이는 구조들 중의 하나입니다.

 


출처 : http://blog.naver.com/PostView.nhn?blogId=inetami&logNo=20102224043
Posted by 오늘마감

댓글을 달아 주세요