일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Swift
- 운영체제
- decode
- 앨런
- struct
- Algorithm
- async
- 가상 메모리
- UserDefaults
- Apple Developer Academy
- 100 days of SwiftUI
- Linked List
- forEach
- 상호배제
- 동시성
- 오브젝트
- scrollview
- 데드락
- @state
- IOS
- COLOR
- 알고리즘
- deadlock
- SwiftUI
- 프로세스 스케줄링
- 인프런
- core data
- Codable
- 비동기
- 동기화
Archives
- Today
- Total
기어가더라도 제대로
Delegate 본문
정의
직역하면 대리인, 클래스 간에 응집도? 결합도? 강한 참조? 여튼 암튼 그런 것을 피하기 위해서 사용하는 패턴
주로 MVC 패턴에서 많이 사용한다네요.
예시
각각의 구성요소들이 각자 자기가 할 일을 처리하고 자신이 처리했다는 사실을 알린다. 연결선은 직접 연결을 뜻하기도하고, 델리게이트일 수도 있고, 옵저버 패턴일 수도 있다. 상황에 따라 적절한 방법을 선택해야한다.
구현
스토리 보드 구현 화면
버튼을 만들어서 함수에 연결
코드 흐름
순서
- view 에서 버튼이 눌림
- 모델아 사각형을 만들어!
- 만들었어!
- 뷰야! 모델이 사각형 만들었데, 뷰 만들어!
버튼을 만드는 방법은 검색을 통해 알아주세요ㅠㅠ 델리게이트에 집중해보겠습니다.
버튼이 눌리면 모델이 사각형을 만듭니다. addRectagle()
메서드 안에서 델리게이트에 만든 사각형을 담습니다.
담긴 사각형을 델리게이트가 전달합니다!
여기서 잠깐, 델리게이트 속성의 타입이 독특하네요! 프로토콜 자체가 타입니다.
델리게이트 프로토콜을 델리게이트 속성에 담고, 어딘가에서 이 델리게이트의 주인이 "나야 !" 하는 그곳에 담긴 사각형이 도착합니다.
모델에서 옵셔널 프로퍼티로 선언한 것은 그 때문입니다. 3. 만들었어!
는 결국 model.delegaet = self
를 선언한 뷰컨트롤러에 도착합니다.
뷰 컨트롤러에서는 이 때를 대비에서 addRectangleDelegate
프로토콜을 채택하고 관련 메서드를 만들어주는 extension
을 만들어주었네요~ 이제 뷰에게 일을 시킵니다. 사각형을 바탕으로 UIView 를 만들으라고 말이죠~
참 쉽죠? (
네 죄송합니다 어려웡요)
완성 화면
'Swift - 기초' 카테고리의 다른 글
객체간 데이터 전달하는 방법 4가지 (0) | 2022.05.08 |
---|---|
Notification Center 간단 사용법 (2) | 2022.03.15 |
Hashable (0) | 2022.03.11 |
parameta와 argument (0) | 2021.11.10 |
type & instance (0) | 2021.11.07 |
Comments