๋ฐ˜์‘ํ˜•

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 83

[Swift] Protocol(ํ”„๋กœํ† ์ฝœ)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ํ”„๋กœํ† ์ฝœ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ํ”„๋กœํ† ์ฝœ(protocol)์€ ํŠน์ • ์ž‘์—… ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ, ํ”„๋กœํผํ‹ฐ, ๊ธฐํƒ€ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์˜ ์ฒญ์‚ฌ์ง„์ž…๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์€ ์–ด๋–ค ํƒ€์ž…์ด๋“  ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. protocol MyProtocol { // ํ”„๋กœํ† ์ฝœ ์ •์˜ } ํ”„๋กœํ† ์ฝœ์€ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ ๋ชจ๋“  ํƒ€์ž…์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์—์„œ ์ •์˜๋œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•œ ํƒ€์ž…์€ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒ(adopt)ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ• 1. ๋ฉ”์„œ๋“œ ํ”„๋กœํ† ์ฝœ์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. protocol MyProtocol { func myMethod() } ์œ„์˜ ์˜ˆ์ œ์—..

iOS/Swift 2023.04.02

[Swift] Copy on write(COW)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Copy on write์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Copy on write์ด๋ž€ Copy on write๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด์„œ, ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์—์„œ ๋ณต์‚ฌํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค. Swift์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Array, Dictionary, Set ๋“ฑ์˜ ๊ฐ’ ํƒ€์ž…์—์„œ Copy on write๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ’ ํƒ€์ž…์„ ๋‹ค๋ฃฐ ๋•Œ๋Š” Copy on write์— ๋Œ€ํ•ด ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Copy on write์˜ ๋™์ž‘ ์›๋ฆฌ var originArray = [1, 2, 3, 4] var copyArray = originArray // copyArray๋Š” originArray..

iOS/Swift 2023.03.30

[iOS] UIViewController์˜ Lifecycle(์ƒ๋ช…์ฃผ๊ธฐ)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UIViewController์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. UIViewController์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ€์ ธ์™€๋ดค์Šต๋‹ˆ๋‹ค. 1. init ์œ„์˜ ์ด๋ฏธ์ง€์—์„œ๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ UIViewController๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ฒ˜์Œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. (์ดˆ๊ธฐํ™” ๊ตฌ๋ฌธ์ด ์žˆ๋‹ค๋ฉด) UIViewController๊ฐ€ ๊ฐ์ฒดํ™”๋  ๋•Œ init(coder:) ๋˜๋Š” Init(nibName:bundle:) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ์ฝ”๋“œ class MyViewController: UIViewController { init() { super.init(nibName: nil, bundle: nil) // ์ดˆ๊ธฐํ™” ์ฝ”๋“œ } required init?..

iOS 2023.03.28

[Swift] ์ปฌ๋ ‰์…˜ ํƒ€์ž…(Collection Type)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ํƒ€์ž…์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๊ณ , ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ์ถ”์ƒํ™” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. Swift์˜ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์€ Array, Set, Dictionary๋กœ 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ์ปฌ๋ ‰์…˜ ํƒ€์ž…์˜ ์ข…๋ฅ˜ (1) Array Array๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. Array๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ฝ๊ณ  ๋ณ€๊ฒฝํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. // ๋ฐฐ์—ด ์ƒ์„ฑ var numbers = [1, 2, 3, 4, 5] // ๋ฐฐ์—ด์— ๊ฐ’์„ ์ถ”๊ฐ€ numbers.append(6) // ๋ฐฐ์—ด ์ธ๋ฑ์Šค ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’ ์ฝ๊ธฐ let firstN..

iOS/Swift 2023.03.26

[Swift] Enum(์—ด๊ฑฐํ˜•)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Enum(์—ด๊ฑฐํ˜•)์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Enum์ด๋ž€? Enum์€ Enumeration(์—ด๊ฑฐํ˜•)์˜ ์ค„์ž„๋ง๋กœ, ์„œ๋กœ ์—ฐ๊ด€๋œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์ž…๋‹ˆ๋‹ค. Swift์—์„œ๋Š” ์—ด๊ฑฐํ˜•์ด ์ผ๋ฐ˜์ ์œผ๋กœ Int, String ๋“ฑ์˜ ์›์‹œ๊ฐ’(Raw Value) ๋˜๋Š” ์—ฐ๊ด€๊ฐ’(Associated Value)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ์ •ํ™•์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Enum์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ Enum์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ์ƒํƒœ๋ฅผ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜๊ณ  ์ด๋ฅผ ์กฐ๊ฑด๋ฌธ ๋“ฑ์„ ํ†ตํ•ด ๋น„๊ตํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. let stateA = "State A" let stateB = "State B"..

iOS/Swift 2023.03.22

[Swift] ์˜ต์…”๋„(Optional)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์˜ต์…”๋„์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1. ์˜ต์…”๋„์˜ ๊ฐœ๋… ์˜ต์…”๋„์€ ์Šค์œ„ํ”„ํŠธ์—์„œ ๊ฐ’์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์—†์„ ์ˆ˜๋„ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๊ฐ€ nil์ผ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์„ ์–ธ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. var optionalInt: Int? // Int ํƒ€์ž…์˜ ์˜ต์…”๋„ ๋ณ€์ˆ˜ var optionalString: String? // String ํƒ€์ž…์˜ ์˜ต์…”๋„ ๋ณ€์ˆ˜ ์œ„์— ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์˜ต์…”๋„ ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ์—๋Š” ์ž๋ฃŒํ˜• ๋’ค์— ๋ฌผ์Œํ‘œ๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 2. ์˜ต์…”๋„ ์‚ฌ์šฉ๋ฐฉ๋ฒ• ์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์˜ต์…”๋„์€ ๊ฐ’์ด ์žˆ์„ ์ˆ˜๋„, ์—†์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 4๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (1)..

iOS/Swift 2023.03.17

[Swift] ์ ‘๊ทผ์ œ์–ด์ž(Access Control)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์ ‘๊ทผ์ œ์–ด์ž์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ์ œ์–ด์ž ์•ž์„œ ์„ค๋ช…ํ•œ ๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ๋“ฑ์˜ ์š”์†Œ๋“ค์—์„œ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํŠน์„ฑ ์ค‘ ํ•˜๋‚˜์ธ ์€๋‹‰ํ™”๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. ์ ‘๊ทผ์ œ์–ด์ž์˜ ์ข…๋ฅ˜ ์ ‘๊ทผ์ œ์–ด์ž๋Š” ์ด 5๊ฐ€์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 1. open open ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ๊ฐ€์žฅ ๋†’์€ ์ˆ˜์ค€์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋กœ, ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ํ•ด๋‹น ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์„œ๋ธŒํด๋ž˜์‹ฑ(subclassing)ํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. open์œผ๋กœ ์„ ์–ธ๋œ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†ํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. open class Animal { open func bark() { print("์œผ๋ฅด๋  ์œผ๋ฅด๋ ") ..

iOS/Swift 2023.03.15

[Swift] Closure์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ๊ธฐ์กด์— ์ž‘์„ฑํ–ˆ๋˜ ํด๋กœ์ € ํฌ์ŠคํŒ…์ด ์ข€ ์–ด์„คํ”ˆ ๋Š๋‚Œ์ด ๋“ค์–ด ๋‹ค์‹œ ํ•˜๋‚˜์˜ ํฌ์ŠคํŒ…์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Closure๋ž€? Closure๋Š” Swift์—์„œ ์ด๋ฆ„์ด ์—†๋Š” ์ต๋ช… ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„ ์ถœ๋ ฅ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Swift์—์„œ๋Š” closure๊ฐ€ ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋˜์–ด, ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ closure๋Š” ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Closure์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ• Swift์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ closure๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. { (parameters) -> ReturnType in statements } ์˜ˆ๋ฅผ ๋“ค์–ด, map ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ closure์˜ ์˜ˆ์‹œ๋ฅผ ..

iOS/Swift 2023.03.13

[Swift] Generics์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Generics์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Swift์—์„œ Generics ์‚ฌ์šฉํ•˜๊ธฐ Generics๋Š” Swift์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ํ•จ์ˆ˜, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค, ์—ด๊ฑฐํ˜• ๋“ฑ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์—์„œ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Int ๋ฐฐ์—ด, String ๋ฐฐ์—ด ๋˜๋Š” ๋ชจ๋“  ํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜์—ฌ ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Generics์˜ ๊ตฌ๋ฌธ Generics๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. func functionName(parameter1: T, parameter2: T) { } T๋Š” ์ž„์˜์˜ ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ผ๋ฐ˜์ ์ธ ์ด๋ฆ„์ž…๋‹ˆ..

iOS/Swift 2023.03.09

[iOS] App Lifecycle(์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ App Lifecycle์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1. iOS 12์™€ ๊ทธ ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” UIApplicationDelegate ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ด๋ฒคํŠธ์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. 2. iOS 13๋ถ€ํ„ฐ๋Š” Scene-based ์•ฑ์—์„œ๋Š” UISceneDelegate ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ด๋ฒคํŠธ์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ iOS 12 ์ดํ•˜์˜ ๋ฒ„์ „์€ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Scene์— ์ดˆ์ ์„ ๋งž์ถฐ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. App Lifecycle (์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ) ์•ฑ์ด ์‹คํ–‰๋˜๋ฉด, ์‹œ์Šคํ…œ์€ SceneDelegate๋ฅผ ํ†ตํ•ด SceneSession์„ ์ƒ์„ฑํ•˜๊ณ  SceneSession์€ ์•ฑ์˜ ๊ฐ๊ฐ์˜ Scene๊ณผ ์—ฐ๊ฒฐ๋˜๋ฉฐ, SceneDelegate๋Š” ..

iOS 2023.03.07
๋ฐ˜์‘ํ˜•