부스트코스 “iOS 프로그래밍” 요약정리 - 2. 회원가입 화면 구현 #4

Updated:

4. Delegation




4.1. Delegation?

델리게이션 디자인 패턴

하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공한다.

  • 델리게이션 디자인 패턴은 애플의 프레임워크에서 광범위하게 활용.
  • 주로 프레임워크 객체가 위임을 요청하며 커스텀 컨트롤러 객체가 위임 받아 특정 이벤트에 대한 기능을 구현.
  • 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 해준다.

데이터소스

  • 델리게이트와 매우 비슷한 역할
  • 델리게이트가 사용자 인터페이스 제어에 관한 권환을 위임받고, 데이터소스는 데이터를 제어하는 기능을 위임받음.
  • 만힝사용 되는 데이터소스 UITableViewDataSource, UICollectionViewDataSource

프로토콜

  • 코코아터치에서 프로토콜을 사용해 델리게이션과 데이터소스를 구현할 수 있다.
  • 객체간 소통을 위한 통신 규약으로 데이터나 메시지를 전달할 때 사용.
  • 프로토콜은 특별한 상황에 대한 역할을 정의하고 제시하지만, 세부기능은 미리 구현해두지 않는다.
  • 구조체, 클래스, 열거형에서 프로토콜을 채택하고 특정 기능을 수행하기 위한 요구사항을 구현할 수 있다.

델리게이션 디자인 패턴은 애플 프레임워크에서 굉장히 많이 활용하고 있으니 꼭 이해하고 넘어가야 한다. 실습 및 문서를 보며 노력하자.

참고 링크




4.2. Delegation 디자인 패턴의 활용

MusicPlayer에서 델리게이트의 활용

self.player = AVAudioPlayer(data: soundAsset.data)

// 뷰 컨트롤러의 인스턴스(self)가 player의 델리게이트 역할을 수행하겠다
self.player.delegate = self 
  • 퀵 헬프, 개발자 문서를 참고하는 연습을 하자

UIImagePickerController

  1. 새로운 프로젝트 ImagePicker 생성
  2. ViewController 클래스에 UIImagePickerControllerDelegate, UINavigationControllerDelegate 프로토콜 추가
  3. 이미지피커 컨트롤러 인스턴스 생성, 델리게이트 등록
  4. 스토리보드에 이미지뷰, 버튼 추가해서 뷰 컨트롤러와 연동
  5. info.plist에 프라이버시 사진보관함 접근 권한 문구 추가
  6. 이미지피커 취소했을 때 동작하는 델리게이트 메소드 추가
  7. 이미지피커에서 사진 선택했을 때 동작하는 델리게이트 메소드 추가
    • 키를 통해서 이미지 받아 띄우기 구현

Leave a comment