๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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

[RxSwift] RxSwift๋ž€? iOS ๊ฐœ๋ฐœ์ž๋ผ๋ฉด RxSwift์— ๋Œ€ํ•ด ๋“ค์–ด๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. RxSwift๋Š” Swift ์–ธ์–ด์— ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋„์ž…ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” RxSwift์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ณ , iOS ๊ฐœ๋ฐœ์—์„œ RxSwift๊ฐ€ ์–ด๋–ป๊ฒŒ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.RxSwift๋ž€?RxSwift๋Š” ๋น„๋™๊ธฐ์ ์ด๊ณ  ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ์ฝ”๋“œ๋ฅผ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ์‹œํ€€์Šค์™€ ํ•จ์ˆ˜ํ˜• ์Šคํƒ€์ผ์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. RxSwift๋Š” ReactiveX (Reactive Extensions) ํŒจ๋ฐ€๋ฆฌ์˜ ์ผ๋ถ€๋กœ, ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ธ๊ธฐ ์žˆ๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๊ฐœ๋…ObservableRxSwift์˜ ํ•ต์‹ฌ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.Observable์€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์ด.. 2024. 6. 3.
[SwiftUI] Text Text A view that displays one or more lines of read-only text ํ•œ ์ค„ ์ด์ƒ์˜ ์ฝ๊ธฐ ์ „์šฉ text๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ทฐ์ž…๋‹ˆ๋‹ค. Text ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— ํ‘œ์‹œํ•  ํ…์ŠคํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. import SwiftUI struct ContentView: View { var body: some View { Text("Hello, SwiftUI!") } } ํ…์ŠคํŠธ ์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ .font()๋ฅผ ์‚ฌ์šฉํ•ด ํ…์ŠคํŠธ์˜ ๊ธ€๊ผด ํฌ๊ธฐ์™€ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Text("Hello, SwiftUI!") .font(.title) .title, .caption ๋“ฑ ์‚ฌ์ „์— ์ •์˜๋œ ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Text("Hello, SwiftUI!") .font(.system(s.. 2024. 4. 18.
[SwiftUI] Stack (VStack/HStack/ZStack) Stack ๋ทฐ๋ฅผ ์ˆ˜์ง ๋˜๋Š” ์ˆ˜ํ‰์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. Stack์„ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ทฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VSatck ๋ทฐ๋ฅผ ์ˆ˜์ง์œผ๋กœ ์Œ“๋Š” ์Šคํƒ์ž…๋‹ˆ๋‹ค. ์„ ์–ธ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ทฐ๋“ค์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. import SwiftUI struct ContentView: View { var body: some View { VStack { Text("First View") Text("Second View") Text("Third View") } } } Alignment VStack์—์„œ alignment ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ•˜์œ„ ๋ทฐ์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .leading์„ ์„ ํƒํ•˜๋ฉด ์™ผ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ, .trailing์„ ์„ ํƒํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ, .cente.. 2024. 4. 8.
[SwiftUI] Property Wrappers Property Wrappers property wrapper๋Š” ํ”„๋กœํผํ‹ฐ์— custom ํ•œ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋ž˜ํ•‘ ํ•˜์—ฌ ์ถ”๊ฐ€ ๋กœ์ง์ด๋‚˜ ๋™์ž‘์„ ์บก์Аํ™” ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ๊ฐ€๋…์„ฑ ๋ฐ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @State view์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. view ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ž๋™์œผ๋กœ view๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋˜๋ฉฐ, ๋ทฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ•ด๋‹น ๊ฐ’์ด ์ดˆ๊ธฐํ™”๋˜๊ณ , ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ ๋˜๋Š” ์™ธ๋ถ€ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— private์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. import SwiftUI struct ContentView: View { @State private va.. 2024. 4. 4.
[Swift] ์ž๋™ ์ฐธ์กฐ ์นด์šดํŠธ ์ž๋™ ์ฐธ์กฐ ์นด์šดํŠธ(ARC, Automatic Reference Counting)์•ฑ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋™์œผ๋กœ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ์“ธ ํ•„์š”๊ฐ€ ์—†๊ณ  ARC๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ง€ํŠน์ • ๊ฒฝ์šฐ์— ARC์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ์˜ ํŠน์ • ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•จ์ฐธ์กฐ ํšŸ์ˆ˜๋Š” ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์—๋งŒ ์ ์šฉ๋˜๊ณ  ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ ๊ฐ’ ํƒ€์ž…์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Œ ARC ๋™์ž‘์ƒˆ๋กœ์šด ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๋งˆ๋‹ค ARC๋Š” ์ธ์Šคํ„ด์Šค ์ •๋ณด๋ฅผ ๋‹ด๋Š”๋ฐ ํ•„์š”ํ•œ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฉ”๋ชจ๋ฆฌ๋Š” ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด์™€ ๊ด€๋ จ๋œ ์ €์žฅ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์Œ์ธ์Šคํ„ด์Šค๊ฐ€ ๋”์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋•Œ ARC๋Š” ๊ทธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ง€ํ•ด ๊ณต๊ฐ„์„ ํ™•๋ณดAR.. 2024. 4. 2.
[Swift] ์ œ๋„ค๋ฆญ ์ œ๋„ค๋ฆญ(Generics)์œ ์—ฐํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์™€ ํƒ€์ž…์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ์ธ์ž๊ฐ’์˜ ํƒ€์ž…๋งŒ ๋‹ค๋ฅด๊ณ  ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜(Generic Functions)ํ•จ์ˆ˜๋ช… ๋’ค์— ํƒ€์ž… ์ด๋ฆ„ placeholder์ธ T๋ฅผ ์„ ์–ธํ•˜๊ณ  a,b ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ T๋กœ ์„ ์–ธfunc swapTwoValues(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA}var someInt = 3var anotherInt = 107swapTwoValues(&someInt, &anotherInt)// someInt is now 107, and anotherInt is now 3var someString .. 2024. 4. 2.
๋ฐ˜์‘ํ˜•