Task
-
Debouncer ๋ง๋ค๊ธฐ (No Combine, No RxSwift)Swift 2023. 10. 9. 02:53
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๋ก์ง์์ ์์ฃผ ๊ฐ๋จํ ์ฌ์ฉํ ์ ์๋ Debouncer๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป No Combine, No RxSwift Combine์ด๋ RxSwift์์ ํํ ์ ํ ์ ์๋ debounce์ ์ฌ์ฉ๊ณผ ํผ๋ํ ์ ์์ด์ ํ๋ฒ ์ง๊ณ ๋์ด๊ฐ๋ณผ๊ป์. ์์๋ก ์ ํ ๊ณต์๋ฌธ์์ Combine ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ์๊ธฐ ์ฝ๊ฒ ๋ณ๊ฒฝํ์ฌ ๊ฐ์ ธ์๋ณด๊ฒ ์ต๋๋ค. let bounces:[(String,TimeInterval)] = [ ("Black", 0), ("Green", 0.25), // 0.25s interval since last index ("Red", 1), // 0.75s interval since last index ("Blue", 1.25), // 0.25s inter..
-
Swift Concurrency - map & forEachConcurrency 2023. 3. 9. 07:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ map๊ณผ forEach์ ๋ํด Swift Concurrency ์ธ์์ผ๋ก ๊ฐ์ ธ์ ๋น๋๊ธฐ ๋ฐ ๋์(๋ณ๋ ฌ) ์ฒ๋ฆฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค๐ ์ฐ๋ฆฌ๋ ๋ง์ ๋ฐ์ดํฐ๋ค์ด ๋ค์ด์ฌ๋ map๊ณผ forEach๋ก ์ข ์ข ๋ค๋ค์ฃผ๊ณค ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ํด๋น ๋ฐ์ดํฐ๋ค์ ๋ค๋ค์ค๋ ํญ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ผ์ด๋์ง ์์๋ฟ๋๋ผ ํด๋น ๋ด๋ถ ์์ ๋ค์ ๋์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ต๋๋ค. ์ฆ ํ ์ค๋ ๋์์ ๋๊ฒ๋๊ณ ์ฒ๋ฆฌํ ๊ฒ์ด ๋ง์์ง๋ฉด ๋ค๋ฅธ ์์ ์ ๋ณ๋ชฉ์ด ์๊ธธ๋๊ฐ ์์ฃ . ๊ทธ๋์ ์ด๋ฒ ์ฃผ์ ๋ ์ด๋ฐ ๋ฐ์ดํฐ ๋ณํ์ ์ํํ ๋ Concurrency์ ๋์์ฑ ์์คํ ์ ํ์ฉํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋๊ธฐ ๋ณํ ์ฐ์ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ต์ํ ๊ตฌ์กฐ๋ถํฐ ๋ณผ๊ป์. class MovieListViewController: UIViewController { privat..
-
Swift Concurrency - ParallelConcurrency 2023. 3. 6. 08:56
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Swift Concurrency Task์ ์๊ฐ์ ์ด์ด ์ฌ๋ฌ Task๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ ์ฐ๋ฆฌ๊ฐ Swift Concurrency๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ทผ๋ณธ์ ์ธ ์ด์ ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ค๋ฃจ๋๊ฒ๋ ์์ง๋ง ์ด๊ฑธ ๋ค๋ฃจ๋ ์ด์ ์์ฒด๊ฐ ๋น๋๊ธฐ ์์ ์ ๋ณ๋ ฌ๋ก ๋๋ถ๋ถ ์ํํ๊ธฐ์ ์ด์ ์ ๊ฐ์ ธ๊ฐ๊ธฐ ์ํจ๋ ์์๊ฑฐ์์! ์ฆ, Swift์ ๋ด์ฅ๋ ๋์์ฑ ์์คํ ์ ์ด์ ์ค ํ๋๋ก ๋น๋๊ธฐ ์์ ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ผฝ์ ์ ์์ต๋๋ค. ๊ทธ๋ผ ๋น๋๊ธฐ ์์ ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ ๋ช๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ฃ ๐บ๐ป ๋น๋๊ธฐ ์์ ์ ๋์์ฑ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ค ํ ํด๋์ค์ ๋ค์ํ ๋น๋๊ธฐ ์์ ์ ์ํํ๋ ๋ฉ์๋๊ฐ ์๋ค๊ณ ์๊ฐํด๋ณผ๊ป์. class ProductLoader { ... func loa..
-
Swift Concurrency - Task (4)Concurrency 2023. 3. 2. 12:11
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ด์ ๋๋์ด Task ํํ์ ๋ง์ง๋ง! ๋น๋๊ธฐ Swift Task์์ ์๋ ์ฌ์๋์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ ์ ๋ฒ ํฌ์คํ ์์๋ Task์ ์ง์ฐ์ ๊ฑฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ดค๋ค๋ฉด ์ด๋ฒ ํฌ์คํ ์์๋ Task๋ฅผ ์๋์ผ๋ก ์ฌ์๋ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์์ฃ ! Task ์๋ ์ฌ์๋ ์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ํต์ ์ ํ ๋ ํ๋ฒ์ ์๋ต๋์ง ์๋ ์ํฉ๋ค๋ ์์ต๋๋ค. ํด๋ผ์ ์๋ชป๋ ์์ฒญ์ด ์๋ ์๋ฒ์์ ๋ด๋ถ์ ์ธ ์์ฃผ ์ ๊น์ ์ด์๋ผ๋์ง ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ฃ . ์ฆ ์ด๋ฐ ๊ฒฝ์ฐ ๋์ผํ๊ฒ ์คํจํ ๋น๋๊ธฐ Task ์์ฒญ์ ์๋์ผ๋ก ์ฌ์๋ ํด์ผํฉ๋๋ค. ๋ง์ฝ Swift Concurrency๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฐ๋ฆฌ๊ฐ ๊ทธ์ ์ ์ต์ํ Combine์ ์ฌ์ฉํ๋ค๋ฉด ์๋์ ๊ฐ์ด retry๋ก ์๋ฌ ์ฒ๋ฆฌ ์ ์ต๋ 3๋ฒ์ ์ฌ์๋๋ฅผ ๊ฑฐ..
-
Swift Concurrency - Task (3)Concurrency 2023. 3. 2. 10:48
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Task ์ธ๋ฒ์งธ ์ด์ผ๊ธฐ์ธ Task์ ๋๋ ์ด๋ฅผ ์ฃผ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค๐ ๋น๋๊ธฐ Swift Task ๋๋ ์ด ์ฃผ๊ธฐ ๋๋๋ก ๋น๋๊ธฐ Task์ ์คํ์ ์์ด ์ด๋์ ๋ ์ง์ฐ์ ์ฃผ๊ณ ์ถ์๋๊ฐ ์์ฃ ! ๊ทธ๋ด๋ ์ฐ๋ฆฌ๊ฐ ์ต์ํ combine์ด๋ผ๋ฉด Debounce๋ฅผ ๊ฑธ์ด ์ฒ๋ฆฌํ๊ณค ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ Task๋ฅผ ์ฌ์ฉํ๋ Swift Concurrency์์๋ ์ด๋ป๊ฒ ํ๋ฉด ์ข์๊น์? ์์ฃผ ๊ฐ๋จํ๊ฒ ์๋์ ๊ฐ์ด Task์ ์ ๊ณต๋๋ sleep ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค. Task { // Delay the task by 1 second: try await Task.sleep(nanoseconds: 1_000_000_000) // Perform our operation ... } ์๋ ๊ฒ ๋ง์ด์ฃ ! ..
-
Swift Concurrency - Task (2)Concurrency 2023. 2. 27. 08:41
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ ๋ฒ Task์ ์ญํ ์ ๋ํด ์์๋ดค์๋ค๋ฉด Task์์ async/await๋ฅผ ์ฌ์ฉํ ๋ ์ค์ Swift์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋๋์ง ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ ์ด๋ฒ ํ์ต ์๋ฃ๋ ์๋ ๋งํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ธ์ ์ธ ์ดํด๋ฅผ ๋ฐํ์ผ๋กํ ๋ฒ์ญ์ ํ ๋๋ก ์ด๋ค์ก์ต๋๋ค๐ https://www.swiftbysundell.com/discover/concurrency/ Discover Concurrency on Swift by Sundell Introduced in Swift 5.5, Swift’s built-in concurrency system provides a lightweight, yet highly efficient set of tools for writing concurrent ..
-
Swift Concurrency - Task (1)Concurrency 2023. 2. 24. 08:16
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ๋ถํฐ๋ Swift Concurrency์ ๋ํด ์ฒด๊ณ์ ์ผ๋ก ํ์ตํด๋ณด๋ คํด์๐๐ป ๊ทธ๋์ ์ ๋ชฉ๋ ์ด๋ฒ์ด ์ฒ์ (1)์ ๋ถ์์ต๋๋ค! ์์ผ๋ก ํด๋ณผ ํ์ต๋ค์ ๋ค ์๋ ๋ ํผ๋ฐ์ค ํ ๋๋ก ์ ๋๋ฆ์ ๋ฒ์ญ? ๊ฐ์ ํด์์ ๊ธฐ๋ฐ์ผ๋ก ํ์ตํจ์ ๋ง์๋๋ฆฝ๋๋ค๐ https://www.swiftbysundell.com/discover/concurrency/ Discover Concurrency on Swift by Sundell Introduced in Swift 5.5, Swift’s built-in concurrency system provides a lightweight, yet highly efficient set of tools for writing concurrent code. That a..