부스트코스 “iOS 프로그래밍” 요약정리 - 2. 회원가입 화면 구현 #4
4. Delegation
- Ref: 부스트코스 - iOS 프로그래밍
4.1. Delegation?
델리게이션 디자인 패턴
하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공한다.
- 델리게이션 디자인 패턴은 애플의 프레임워크에서 광범위하게 활용.
- 주로 프레임워크 객체가 위임을 요청하며 커스텀 컨트롤러 객체가 위임 받아 특정 이벤트에 대한 기능을 구현.
- 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 해준다.
데이터소스
- 델리게이트와 매우 비슷한 역할
- 델리게이트가 사용자 인터페이스 제어에 관한 권환을 위임받고, 데이터소스는 데이터를 제어하는 기능을 위임받음.
- 만힝사용 되는 데이터소스 UITableViewDataSource, UICollectionViewDataSource
프로토콜
- 코코아터치에서 프로토콜을 사용해 델리게이션과 데이터소스를 구현할 수 있다.
- 객체간 소통을 위한 통신 규약으로 데이터나 메시지를 전달할 때 사용.
- 프로토콜은 특별한 상황에 대한 역할을 정의하고 제시하지만, 세부기능은 미리 구현해두지 않는다.
- 구조체, 클래스, 열거형에서 프로토콜을 채택하고 특정 기능을 수행하기 위한 요구사항을 구현할 수 있다.
델리게이션 디자인 패턴은 애플 프레임워크에서 굉장히 많이 활용하고 있으니 꼭 이해하고 넘어가야 한다. 실습 및 문서를 보며 노력하자.
참고 링크
4.2. Delegation 디자인 패턴의 활용
MusicPlayer에서 델리게이트의 활용
self.player = AVAudioPlayer(data: soundAsset.data)
// 뷰 컨트롤러의 인스턴스(self)가 player의 델리게이트 역할을 수행하겠다
self.player.delegate = self
- 퀵 헬프, 개발자 문서를 참고하는 연습을 하자
UIImagePickerController
- 새로운 프로젝트 ImagePicker 생성
- ViewController 클래스에 UIImagePickerControllerDelegate, UINavigationControllerDelegate 프로토콜 추가
- 이미지피커 컨트롤러 인스턴스 생성, 델리게이트 등록
- 스토리보드에 이미지뷰, 버튼 추가해서 뷰 컨트롤러와 연동
- info.plist에 프라이버시 사진보관함 접근 권한 문구 추가
- 이미지피커 취소했을 때 동작하는 델리게이트 메소드 추가
- 이미지피커에서 사진 선택했을 때 동작하는 델리게이트 메소드 추가
- 키를 통해서 이미지 받아 띄우기 구현
Leave a comment