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

๐ŸŽ iOS/iOS Programming

(15)
Apple Intelligence on iOS18 Apple ์—์„œ ์ตœ์ดˆ๋กœ ๊ณต๊ฐœํ•œ ์ƒ์„ฑํ˜• AI ์‹œ์Šคํ…œ์ด๋ž€ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ๋ฅผ ๊ฐ€์ ธ์™€๋ดค๋‹ค.AI ์ „๊ณต์— ์‚ด์ง ๋ฐœ ๋‹ด๊ถœ๋˜ ์‚ฌ๋žŒ์ด์ง€๋งŒ, Vision ์œ„์ฃผ์ด๊ณ  LLM ์ชฝ์€ ์ž˜ ๋ชฐ๋ผ์„œ ๊ฐ™์ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์•Œ์•„๊ฐ€๋Š”๋ฐ ์žฌ๋ฐŒ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค. โœ”๏ธ Apple intelligence?Apple intelligence๋Š” WWDC์—์„œ ๊ณต๊ฐœ๋œ ์• ํ”Œ์˜ ์ƒ์„ฑํ˜• ์ธ๊ณต์ง€๋Šฅ ์‹œ์Šคํ…œ*WWDC๋Š” apple ์—์„œ ์ฃผ์ตœํ•˜๋Š” ์„ธ๊ณ„์• ํ”Œ๊ฐœ๋ฐœ์ž ์ปจํผ๋Ÿฐ์Šค๋กœ ๋งค๋…„ ์ง„ํ–‰ํ•˜๋Š” ์—ฐ๋ก€ํ–‰์‚ฌ, ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ๋‚˜ ์ƒˆ๋กœ์šด ์ œํ’ˆ ๋ฐ ๊ธฐ์ˆ ์„ ๋ฐœํ‘œWWDC24์—์„œ ๊ณต๊ฐœ๋œ ์ฃผ์ œ๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ Apple intelligence! โœ”๏ธ ๊ธฐ์กด ์ƒ์„ฑํ˜• ์ธ๊ณต์ง€๋Šฅ ์„œ๋น„์Šค(chatGPT etc.)์™€์˜ ์ฐจ์ด์ ์€? ์• ํ”Œ์€ apple intelligence๋งŒ์˜ ํŠน์ง•์„ ์ •์˜์—์„œ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.์ •์˜๋ฅผ ๋ณด๋ฉด t..
MVVM + RxSwift MVVM(Model - View - ViewModel)   1. ๋ทฐ(View) (ํ™”๋ฉด์„ ๊ทธ๋ฆฐ๋‹ค.)ํ™”๋ฉด์— ํ‘œํ˜„๋˜๋Š” ๋ ˆ์ด์•„์›ƒ ๊ด€์—ฌํ•œ๋‹ค. UI์— ๊ด€๋ จ๋œ ๊ฒƒ๋“ค์„ ๋‹ค๋ฃจ๋ฏ€๋กœ UI๋กœ์ง์„ ํฌํ•จํ•œ๋‹ค.๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํฌํ•จํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.๊ฐ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ , ViewModel๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ• ์ง€๋“ฑ์„ ๋‹ด๊ณ ์žˆ๋‹ค. 2. ๋ทฐ๋ชจ๋ธ(ViewModel) (ํ™”๋ฉด์— ๊ทธ๋ฆด ์ •๋ณด๋ฅผ ์ค€๋น„ํ•œ๋‹ค.)ViewModel์€ ์•ฑ์˜ ํ•ต์‹ฌ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๊ณ ์žˆ๋Š” ์ฝ”๋“œ ๊ณ„์ธต์ด๋‹ค.MVCํŒจํ„ด์˜ Controller์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค.View์™€ Model์‚ฌ์ด์—์„œ View์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ณ , Model์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ View์˜ refreshํ•œ๋‹ค.Model์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด View์—๊ฒŒ notification์„ ๋ณด..
[iOS] ReactiveX, Reactive Programming Reactive ProgrammingReactive Programming์ด๋ž€ ๋น„๋™๊ธฐ์  ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ์ „๋‹ฌ์— ๊ด€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค.Reative Programming์˜ ํ•ต์‹ฌ์€ ๋ชจ๋“  ๊ฒƒ์„ ๋น„๋™๊ธฐ์  ๋ฐ์ดํ„ฐ์˜ stream์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ง์ ‘ ์ •ํ•ด์„œ ์‹คํ–‰๋˜๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜์—ˆ์„ ๋•Œ, ์ด๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ๋Š” Reative Programming์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์‹ค์‹œ๊ฐ„์„ฑ์„ ๊ฐ€์ง„๋‹ค.ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ˆœ์„œ์™€ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๊ทธ์— ๋”ฐ๋ผ์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™”๋ฉด์ด ๋ณ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.์ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ง€์†์ ์œผ๋กœ ํŠน์ • ๊ฐ’์— ๋Œ€ํ•œ ๊ด€์ฐฐ์„ ํ•ด์•ผ ..
[iOS] iOS data storage - 2. Userdefault, Coredata, Realm, Keychain File Manager์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ํ†ตํ•ด ์•ฑ๋งˆ๋‹ค ๋ณ„๋„์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ๊ณต์œ ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ , ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ์˜ ์ ‘๊ทผ์—๋„ ๋ณดํ˜ธ๋˜๋Š” ์˜์—ญ์œผ๋กœ ์‹œ์Šคํ…œ์ด ๋ถ€์ •์ ์œผ๋กœ ์กฐ์ž‘๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋‹ค. ํŒŒ์ผ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด์„œ ํŒŒ์ผ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐพ๊ณ , ๋งŒ๋“ค๊ณ , ๋ณต์‚ฌํ•˜๊ณ , ์ด๋™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.ํŒŒ์ผ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์ฃผ๋กœ ์ ‘๊ทผํ•ด ์‚ฌ์šฉํ•  ๋””๋ ‰ํ† ๋ฆฌ๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ฉด์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณด์ž.์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ฉดfile system๊ณผ ์ƒํ˜ธ ์ž‘์šฉ ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šคfile๊ณผ directory๋ฅผ locate, create, copy, move ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.file system ๋‚ด ์ €์žฅ์‹œ ๊ฒฝ๋กœ(path) ์ •๋ณด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” NSURL์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ์ง€์ •iCloud ๋‚ด ์ €์žฅ๋˜์–ด ์žˆ..
[iOS] iOS data storage - 1. Sandbox(์ƒŒ๋“œ๋ฐ•์Šค) [Contents]SandBox ?SandBox ๊ตฌ์กฐBundle ContainerData ContainerDocumentLibrarytmpiCloud Container1. SandBox ?์•ฑ์„ ์ƒˆ๋กœ ์„ค์น˜ํ–ˆ์„ ๋•Œ, ๊ฐ„ํ˜น ์•„๋ž˜์™€ ๊ฐ™์ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•ด๋‹ฌ๋ผ๋Š” Alert์€ ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ๊ฐ ์•ฑ๋ณ„๋กœ ๋ณ„๋„๋กœ ์ˆ˜ํ–‰๋˜๋Š”๋ฐ,๊ฐ ์•ฑ์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋‚˜ ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผํ•˜๋ ค๋ฉด *๊ถŒํ•œ (Permission)*์„ ์š”์ฒญํ•ด์•ผ ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์Šน์ธํ•ด์•ผ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ App Sandbox๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ถŒํ•œ๊ณผ ์ ‘๊ทผ ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๊ฐ๊ฐ์˜ ์•ฑ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ์ด ์ œ๊ณต๋˜๋ฉฐ, ์•ฑ์€ ์ด ํ™˜๊ฒฝ ์™ธ๋ถ€์˜ ์‹œ์Šคํ…œ ํŒŒ์ผ์ด๋‚˜ ๋‹ค๋ฅธ ์•ฑ์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค...
[iOS, Swift] ์ด๋ฏธ์ง€(ํŒŒ์ผ) ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•˜๊ธฐ(multipart/form-data), ์‚ฌ์ง„์•จ๋ฒ”(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์—์„œ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ(UIImagePickerController) โœ”๏ธ GOAL ๐Ÿฉถ Step 1. ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์‚ฌ์ง„์•จ๋ฒ”(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์— ์ ‘๊ทผ 1-1. ์„ ํƒํ•œ ์ด๋ฏธ์ง€๋ฅผ imageView๋กœ ๋ณด์—ฌ์ค€๋‹ค. 1-2. ์„ ํƒํ•œ ์ด๋ฏธ์ง€ ํ˜น์€ ์นด๋ฉ”๋ผ๋กœ ์ฐ์€ ์ด๋ฏธ์ง€๋ฅผ ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•œ๋‹ค. ๐Ÿฉถ Step 2. ์„œ๋ฒ„ ํ†ต์‹  ํ›„ response url๋กœ imageView์— ๋ณด์—ฌ์ค€๋‹ค. โœ”๏ธ SETTING 1. Info.plist ์ˆ˜์ • privacy - Photo Library Usage Description, Privacy - Camera Usage Description ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์ง„์•จ๋ฒ”, ์นด๋ฉ”๋ผ ์ ‘๊ทผ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ—ˆ๊ฐ€ + Description์— ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ๊ธฐ์žฌํ•œ๋‹ค. ์ด๋•Œ, ์ด์œ ๋Š” ์นด๋ฉ”๋ผ, ์•จ๋ฒ” ํ—ˆ๊ฐ€ ์š”์ฒญ ์•Œ๋ฆผ ์ฐฝ์— ๋ฉ”์‹œ์ง€๋กœ ๋‚˜์˜ค๋Š”๋ฐ, ๋ถˆ์นœ์ ˆํ•œ ๊ฒฝ์šฐ, ์ถ”ํ›„ ์•ฑ์Šคํ† ์–ด์— ์•ฑ ๋ฐฐํฌํ•  ๋•Œ, ๋ฆฌ..
[iOS] Concurrency(๋™์‹œ์„ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ(1) - Concurrency(๋™์‹œ์„ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€? iOS์—์„œ Concurrency(๋™์‹œ์„ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. Concurrency(๋™์‹œ์„ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ? GCD/Operation? DispatchQueue ์˜ ์ข…๋ฅ˜ Synchronous(๋™๊ธฐ) VS Asynchronous(๋น„๋™๊ธฐ) Serial(์ง๋ ฌ) VS Concurrency(๋™์‹œ) ๐Ÿ”ฅ Concurrency(๋™์‹œ์„ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ? ๊ฐ™์€ ์‹œ๊ฐ„ ๋‚ด์— ๋‹ค์ˆ˜์˜ ์ž‘์—…์ด ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•œ ์“ฐ๋ ˆ๋“œ ์•ˆ์— ๋งŽ์€ ์–‘์˜ Task๊ฐ€ ์Œ“์ด๋ฉด์„œ ์†๋„ ์ง€์—ฐ, ์„ฑ๋Šฅ ์ €ํ•˜ ๋“ฑ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๋กœ ๋ถ„์‚ฐ์‹œ์ผœ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ๋ณดํ†ต ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์ž‘์—…๋“ค์€ ์‹œ๊ฐ„์ด ๊ฝค๋‚˜ ๊ฑธ๋ฆฌ๋Š” ํฐ ์ž‘์—…์ด๊ฑฐ๋‚˜ ์–ธ์ œ ๋๋‚ ์ง€ ๋ชจ๋ฅด๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ์ž‘์—…์— ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋„คํŠธ์›Œํฌ, ํŒŒ์ผ๋กœ๋”ฉ ๋“ฑ. ๊ทธ..
[iOS] Objective-C <-> Swift ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ธฐ(1. ํ”„๋กœ์ ํŠธ์—์„œ 2. framework์—์„œ) + @objc attribute ์ •ํ™•ํžˆ ์‚ฌ์šฉํ•˜๊ธฐ ์ œํ’ˆ ๊ฐœ๋ฐœ ์ค‘ ๊ณ ๊ฐ์‚ฌ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ Swift ์–ธ์–ด์— ๋Œ€์‘ํ•˜๋Š” ์ผ์ด ๋งŽ์•„์ง€๋ฉด์„œ, ๊ธฐ์กด Objective-C๋กœ ๊ตฌํ˜„๋œ ์ œํ’ˆ ์ž์ฒด๋ฅผ Swift๋กœ Converting ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ Objective-C์™€ Swift๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ , Swift๋กœ ๋งŒ๋“  Framework๋ฅผ Objective-C ํ”„๋กœ์ ํŠธ์—์„œ Objective-C๋กœ ๋งŒ๋“  Framework๋ฅผ Swift ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ Swift์™€ Objective-C ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•  ๊ฒƒ๋“ค๊ณผ ๋‘ ์–ธ์–ด์˜ ์ฐจ์ด์ ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค. [Contents] Swift ํ”„๋กœ์ ํŠธ์—์„œ Objective-C ์‚ฌ์šฉํ•˜๊ธฐ Swift ํ”„๋กœ์ ํŠธ์—์„œ Objective-C ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• (Import O..

๋ฐ˜์‘ํ˜•