Search
๐Ÿช†

Combin

Combine

๊ฐœ๋… ๋ฐ”๋กœ ์•Œ๊ธฐ

1.
Combine ํ”„๋ ˆ์ž„์›Œํฌ:
โ€ข
Apple์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Reactive Programming) ํ”„๋ ˆ์ž„์›Œํฌ.
โ€ข
๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ด๋ฒคํŠธ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ.
2.
์ฃผ์š” ๊ฐœ๋…:
โ€ข
Publisher: ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฃผ์ฒด.
โ€ข
Subscriber: ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์ฒด.
โ€ข
Operators: ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋งํ•˜๋Š” ์ค‘๊ฐ„ ์—ฐ์‚ฐ์ž.
3.
Combine์˜ ํ๋ฆ„:
โ€ข
Publisher โ†’ Operator โ†’ Subscriber.

Combine ์˜ˆ์ œ

import Combine // Publisher ์ƒ์„ฑ let numbers = [1, 2, 3, 4, 5].publisher // Subscriber๋ฅผ ํ†ตํ•ด ๊ฐ’ ์ถœ๋ ฅ numbers .map { $0 * 2 } // ๊ฐ’ ๋ณ€ํ™˜ .sink { print($0) } // ๊ฐ’ ์ถœ๋ ฅ
Swift
๋ณต์‚ฌ

์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

Combine์€ iOS์—์„œ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์„ ์–ธ์ ์œผ๋กœ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
Combine์„ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉฐ Combine์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ตํ˜€๋ณด์„ธ์š”!

Step 1: Combine ๊ธฐ๋ณธ ๊ตฌํ˜„

1.
๊ฐ„๋‹จํ•œ Publisher์™€ Subscriber ๋งŒ๋“ค๊ธฐ:
โ€ข
๋ฐฐ์—ด [10, 20, 30, 40, 50]์„ Publisher๋กœ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ ๊ฐ’์„ 2๋ฐฐ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ถœ๋ ฅํ•˜์„ธ์š”.
ํžŒํŠธ(5๋ถ„๊ฐ„ ๊ณ ๋ฏผํ•˜๊ณ  ํŽผ์ณ๋ณด๊ธฐ!)
2.
Just Publisher ์‚ฌ์šฉ:
โ€ข
๋‹จ์ผ ๊ฐ’ 100์„ ์ œ๊ณตํ•˜๋Š” Just๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ณ€ํ™˜(+50)ํ•˜๊ณ  ์ถœ๋ ฅํ•˜์„ธ์š”.
ํžŒํŠธ(5๋ถ„๊ฐ„ ๊ณ ๋ฏผํ•˜๊ณ  ํŽผ์ณ๋ณด๊ธฐ!)

Step 2: Combine๋กœ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

1.
URLSession๊ณผ Combine ์‚ฌ์šฉ:
โ€ข
Combine์„ ์‚ฌ์šฉํ•ด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์„ธ์š”.
โ€ข
API: https://jsonplaceholder.typicode.com/todos/1
โ€ข
์š”์ฒญ ๊ฒฐ๊ณผ์˜ title ๊ฐ’์„ ์ถœ๋ ฅํ•˜์„ธ์š”.
ํžŒํŠธ(5๋ถ„๊ฐ„ ๊ณ ๋ฏผํ•˜๊ณ  ํŽผ์ณ๋ณด๊ธฐ!)
2.
Timer Publisher ์‚ฌ์šฉ:
โ€ข
1์ดˆ๋งˆ๋‹ค ํ˜„์žฌ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•˜๋Š” Combine ํƒ€์ด๋จธ๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
โ€ข
5์ดˆ ํ›„์—๋Š” ๊ตฌ๋…์„ ์ทจ์†Œํ•˜์„ธ์š”.
ํžŒํŠธ(5๋ถ„๊ฐ„ ๊ณ ๋ฏผํ•˜๊ณ  ํŽผ์ณ๋ณด๊ธฐ!)

์ œ์ถœํ•˜๊ธฐ

โ€ข
๊ณผ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌ ํ–ˆ๋‹ค๋ฉด ์•„๋ž˜๋งํฌ๋ฅผ ํ†ตํ•ด ์ œ์ถœํ•ด์ฃผ์„ธ์š”!