iOS개발하기 #33. Protocol, Delegate (프로토콜, 딜리게이트)

오늘의 주제

  • Protocol
  • Delegate 만들어 보기

서른 세 번째 시간입니다.^^

지난 번에는 유저의 응답을 받아 볼 수 있는 피커뷰에 대해 알아보았습니다~
이번에는 프로토콜이라는 것에 대하여 알아보도록 할게요~
잘만 사용하면 좋은 녀석입니다 ㅎ

스따뚜~!

Protocol이란?

네트워크에서 프로토콜이라 함은 일종의 통신규약을 말하는데요, Objective-C에서는 약간 다른 의미로 사용됩니다.
음... 뭐 굳이 말하자면 클래스간의 통신 규약이라고도 말할 수 있겠네요 ㅎ
프로토콜은 일정한 메서드를 통하여 클래스 간에 통신을 할 수 있는 통로를 제공합니다.
어떠한 객체에서 다른 객체로 데이터나 메세지를 전달하고 싶을 때 사용할 수 있습니다.

말로는 잘 느낌이 안오시죠?ㅎ
그런데 이렇게 말씀드리면 느낌이 조금 오시려나요?ㅎ이 프로토콜이란 친구를 사용하여 코코아 터치에 많이 사용되고 있는 위임패턴(Delegation Pattern)을 구현할 수 있습니다.

그럼 기본적으로 클래스에서 제공되는 딜리게이트 메서드 말고 우리가 직접 딜리게이트 프로토콜과 메서드를 만들어 보는 시간을 갖도록 하겠습니다.ㅎ

Delegate 만들어보기

이번 실습에서는 ViewController의 한 라벨에다가 ViewControllerForWeb에서 우리가 불러왔던 웹페이지의 마지막 주소를 세팅하는 것을 해보겠습니다.

그러려면 일단 ViewController에 라벨을 하나 넣어줘야겠죠?ㅎ
라벨을 넣어주시고 아울렛을 연결해 줍니다.

그리고 이제는 프로토콜 생성을 위하여 ViewControllerForWeb.h로 옵니다.
거기에 프로토콜을 작성해 주고, 프로퍼티로 딜리게이트를 만들어 줍니다.
@required와 @optional은
말 그대로 다른 객체와 프로토콜을 통해 연결했다면 꼭 구현해줘야 하는 메서드이다. 선택적으로 구현해 주어야 하는 메서드이다를 구분해 준 것입니다.
지난 번에 피커뷰에서 피커뷰 딜리게이트 중에 필수적으로 구현이 되어야 하는 메서드가 있었지요? 그것을 생각하시면 편할거예요.

그리고 ViewControllerForWeb.m에서 헤더에서 만들어준 딜리게이트를 synthesize로 받아줍니다.

그리고 우리가 마지막으로 ViewControllerForWeb을 닫을 때 프로토콜을 통하여 ViewController로 메서드를 호출합니다.

그리고 이제는 ViewController로 돌아와서 딜리게이트로서의 역할을 하도록 세팅해 주고, 메서드 들을 선언해 줍니다.

그리고 구현파일 ViewController.m으로 돌아와서 실제적으로 메서드를 구현해 줍니다.
또, ViewControllerForWeb의 객체를 생성해 줬을 때, 자신을 딜리게이트로 설정을 해 줍니다.

자, 이제 실행해 볼까요?ㅎ

이렇게 웹페이지를 띄웠다가~

닫고 이전 화면으로 돌아가면~ 맨 마지막에 요청하였던 페이지의 주소가 라벨에 세팅이 되어있음을 확인 할 수 있습니다 ㅎ

아까 구현해놓고 실행하지 않았던 빨간색으로 글자 바꾸는 메서드는 여러분께서 한 번 적절히 활용해서 꼭 실행해 보시기 바랍니다 ㅎ

정말 중요한 개념인데 금방 끝냈네요~

굉장히 중요한 내용 중에 하나이기 때문에 혹여나 이해가 안되시거나 부족하다 싶으면 꼭 말씀해 주세요.
보강설명 들어가겠습니다...ㅎ
사실 지금 좀 부족한 감이 있습니다만, 여러분의 피드백이 필요한 시점입니다 ㅎㅎ
피드백 없으면 이 내용은 포스팅이 또 안나오겠지요..ㅎ

by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   

댓글 남기기

Close