๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
iOS ๐ŸŽ/iOS

Delegation Pattern

by yongmin.Lee 2021. 2. 17.

Delegation?

- ๋”œ๋ฆฌ๊ฒŒ์ด์…˜ ์ด๋ž€ ์ผ๋ถ€ ํด๋ž˜์Šค์˜ ์ฑ…์ž„์„ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์—๊ฒŒ ์œ„์ž„ ๋˜๋Š” ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ์˜๋ฏธํ•œ๋‹ค.

- ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ '๋„์šฐ๋ฏธ' ์—ญํ• ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ. 

- ์–ด๋– ํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์žˆ์–ด ๊ฐ์ฒด ์ž์‹ ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์˜คํžˆ๋ ค ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ

Delegation in iOS example

class NoteViewController: UIViewController, UITextViewDelegate {
	var textView: UITextView
    
    func viewDidLoad() {
    	textView.delegate = self // NoteViewController ์ธ์Šคํ„ด์Šค๋Š” textView์˜ delegate
    }
}

- UIViewController๋ฅผ ์ƒ์†๋ฐ›๋Š” NoteViewController ํด๋ž˜์Šค ์ƒ์„ฑ

- NoteViewController ํด๋ž˜์Šค๋Š” UITextViewDelegate ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒ

- NoteViewController ์ธ์Šคํ„ด์Šค๊ฐ€ textView์˜ delegate๋กœ ์ง€์ •๋จ

- NoteViewController ํด๋ž˜์Šค์—์„œ ํ…์ŠคํŠธ textView์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ UITextViewDelegate์˜ delegateํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Delegation Pattern ์žฅ์ 

- ๋ธ๋ฆฌ๊ฒŒ์ด์…˜, ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์€ ํ•œ ํด๋ž˜์Šค์™€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ„๋‹จํžˆ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค.

- ํด๋ž˜์Šค ๊ฐ„ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ๋งŒ ์žˆ์œผ๋ฉด ์—ฐ๊ฒฐ์ด ์ˆ˜์›”ํ•ด์ง„๋‹ค.

- ์™„์ „ํ•œ ํด๋ž˜์Šค ๋˜๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์†ํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋Š” ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ ํ•˜๋Š”๊ฒƒ ๋งŒ์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋งค์šฐ ์œ ์—ฐํ•˜๋‹ค.

- ์ฆ‰, ์ œ์–ดํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ "์—ฐ๊ฒฐ" ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

 

'iOS ๐ŸŽ > iOS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Responding to the Launch of Your App  (0) 2021.02.24
MVC, MVP, MVVM Pattern  (0) 2021.02.17
Design Pattern  (0) 2021.02.16
View hierarchy  (0) 2021.02.16
AutoLayout  (0) 2021.02.16