• Feed
  • Explore
  • Ranking
/
๐Ÿ“ฑ iOS
23
iOS ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ๋œ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.





์ง€
์ง€์„ฑ
4 ํŒ”๋กœ์›Œ
ยท
0 ํŒ”๋กœ์ž‰
๊ณ ์–‘์ด ์•‰ํ˜€๋†“๊ณ  ์ฝ”๋”ฉ
ํƒœ๊ทธ

์ตœ๊ทผ ๋Œ“๊ธ€
OAuthProvider ์ฝœ๋ฐฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š์„ ๋•Œ?ํ˜„์žฌ ์ง„ํ–‰ํ•˜๋Š” iOS ํ”„๋กœ์ ํŠธ์—์„œ Firebase Authentication์˜ OAuthProvider๋ฅผ ์‚ฌ์šฉํ•ด GitHub ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘, ๋‹ค์†Œ ํฅ๋ฏธ๋กœ์šด ๋™์ž‘์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.getCredentialWith ํ˜ธ์ถœ ํ›„ ์•„๋ฌด๋Ÿฐ ์˜ค๋ฅ˜๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋ฐ๋„, completion ๋ธ”๋ก์ด ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค. ๋””๋ฒ„๊ฑฐ๋‚˜ ๋Ÿฐ๋ฃจํ”„ ์ƒํƒœ๋ฅผ ์—ฌ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ํ™•
0
0
3 months ago
3 min read

RxSwift vs Combine - ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Reactive Programming)์€ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค. UI ์ด๋ฒคํŠธ, ๋„คํŠธ์›Œํฌ ์‘๋‹ต, ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋“ฑ์˜ ๋ณ€ํ™”๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค.๊ทธ๋ ‡๋‹ค๋ฉด RxSwift์™€ Combine๋Š” ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ?RxSwift vs Comb
0
0
a year ago
6 min read

[iOS] Scene, Window, View์˜ ๊ฐœ๋…๊ณผ ์ฐจ์ด์ Scene, Window, View์˜ ๊ฐœ์š”Apple ์ƒํƒœ๊ณ„์—์„œ Scene, Window, View๋Š” UI ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค.๊ฐœ๋…์—ญํ• ์ฃผ์š” ํŠน์ง•Scene์•ฑ์˜ UI์™€ ์ƒํƒœ ๊ด€๋ฆฌ์—ฌ๋Ÿฌ ๊ฐœ์˜ Scene์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ€ํ‹ฐ ์œˆ๋„์šฐ ์ง€์›Windowํ™”๋ฉด์— View๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆUIWindow๋ฅผ ํ†ตํ•ด ์•ฑ์˜ ์ฃผ์š” ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œViewํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š”
0
0
a year ago
6 min read
article-thumbnail

[iOS] View ์ „ํ™˜ ์‹œ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ(Strong Coupling) ๋ฌธ์ œ์™€ Coordinator ํŒจํ„ด์„ ํ™œ์šฉํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ํ•œ ViewController์—์„œ ๋‹ค๋ฅธ ViewController๋กœ ์ด๋™ํ•  ๋•Œ, ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.class FirstViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() }
0
0
a year ago
3 min read

[iOS] MVVM๊ณผ Clean Architecture์˜ ๊ฒฐํ•ฉ: iOS ์•ฑ ๊ฐœ๋ฐœ์—์„œ์˜ ๊ตฌ์กฐ์  ์ ‘๊ทผiOS ์•ฑ ๊ฐœ๋ฐœ์—์„œ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ, MVVM๊ณผ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹์€ ์•„์ฃผ ํšจ๊ณผ์ ์ด๋‹ค. ์ด ๊ธ€์—์„œ๋Š” MVVM๊ณผ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ , ์ด ๋‘˜์„ ์–ด๋–ป๊ฒŒ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ๋‹ค.MVVM (Model-View-ViewModel)MVVN์€ iOS์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์œผ๋กœ, ์ฝ”๋“œ์˜ ๋ชจ๋“ˆํ™”์™€ UI ๋กœ
0
0
a year ago
6 min read

[iOS] ์ƒˆ๋กœ์šด Logger API (iOS 14 ์ด์ƒ)์ด์ „์— print๋‚˜ NSLog ๋Œ€์‹  os_log๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ธ€์„ ์“ด ์ ์ด ์žˆ๋‹ค.์•Œ๊ณ ๋ณด๋‹ˆ iOS 14๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด Logger API๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Logger API์˜ ์žฅ๋‹จ์ ๊ณผ ๊ธฐ์กด ๋กœ๊น… ๋ฐฉ์‹ ๋ฐ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(CocoaLumberjack, OSLog)์™€์˜ ๋น„๊ต๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.Logger API๋ž€?๊ธฐ์กด ๋กœ๊น… ๋ฐฉ์‹๊ณผ์˜ ์ฐจ์ด์ ๊ธฐ์กด iOS์—
0
0
a year ago
7 min read

[iOS] ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ ์šฉ๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ดํ•ด์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์™œ ํ•„์š”ํ• ๊นŒ?์•ฑ ๊ฐœ๋ฐœ์—์„œ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ์œผ๋กœ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Third-Party Library)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ!๋„คํŠธ์›Œํฌ ์š”์ฒญ โ†’ Alamo
0
0
a year ago
6 min read

[iOS] SDWebImage๋กœ ๋„คํŠธ์›Œํฌ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ์ตœ์ ํ™”์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•  ๋•Œ SDWebImage ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ์บ์‹ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.SDWebImage ์„ค์น˜ (Swift Package Manager)Xcode - File - Add Package Dependencieshttps://github.com/SDWebImage/SDWebImage ์ถ”๊ฐ€UIImageView๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ด
0
0
a year ago
1 min read

[iOS] Core Data์—์„œ Fetch ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•Core Data์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.Fetch Batch Size ์„ค์ •ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ ์–‘(Batch Size)๋ฅผ ์ •ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ตœ์ ํ™”fetchRequest.fetchBatchSize = 20ํ•„์š”์—†๋Š” ์†์„ฑ ์ œ์™ธํ•„์š”ํ•œ ์†์„ฑ๋งŒ ๊ฐ€์ ธ์™€ ์„ฑ๋Šฅ ํ–ฅ์ƒfetchRequest.propertiesToFetch
0
0
a year ago
1 min read

[iOS] Core Data CRUD (Create, Read, Update, Delete) ๊ตฌํ˜„Core Data์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ(Create), ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(Read), ์ˆ˜์ •(Update), ์‚ญ์ œ(Delete)ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ CRUD ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ •๋ฆฌCore Data ์Šคํƒ ์„ค์ •import CoreData class CoreDataManager { static let shared = CoreDataManager() let
0
0
a year ago
2 min read

[iOS] API ์‘๋‹ต์„ Swift Codable ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•API ์š”์ฒญ ํ›„ ์„œ๋ฒ„์—์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ต๋ฐ›์œผ๋ฉด, Swift์—์„œ Codable์„ ์‚ฌ์šฉํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” Codable์„ ํ™œ์šฉํ•˜์—ฌ JSON ๋ฐ์ดํ„ฐ๋ฅผ Swift ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.์„œ๋ฒ„์—์„œ ๋ฐ›์€ JSON ๋ฐ์ดํ„ฐ๋ฅผ Swift์—์„œ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.{ "id": 1, "usernam
0
0
a year ago
2 min read

[iOS] URLSession & Combine์„ ํ™œ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์ตœ์ ํ™”๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ URLSession์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋” ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Combine ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” URLSession์„ ํ™œ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.๊ธฐ์กด URLSession ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ let task = URLSession.shared.dataTask(with: url
0
0
a year ago
3 min read

[iOS] API ์š”์ฒญ ์‹œ ๋ฐœ์ƒํ•˜๋Š” โ€˜Invalid JSONโ€™ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํ†ตํ•ด JSON ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ Invalid JSON ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.์ด ๋ฌธ์ œ๋Š” ๋ณดํ†ต ์ž˜๋ชป๋œ API ์‘๋‹ต, JSON ๋””์ฝ”๋”ฉ ๋ฌธ์ œ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ ๋“ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค.์ด ๊ธ€์—์„œ๋Š” Invalid JSON ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๋ถ„์„ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.๋ฌธ์ œ ์ƒํ™ฉ์„œ๋ฒ„์—์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ๋””์ฝ”๋”ฉํ•˜๋ ค๊ณ  ํ–ˆ์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€
0
0
a year ago
3 min read

[iOS] NSFetchedResultsController๋ฅผ ํ™œ์šฉํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”Core Data์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ  UI์™€ ๋™๊ธฐํ™”ํ•˜๋ ค๋ฉด NSFetchedResultsController๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.ํŠนํžˆ UITableView ๋ฐ UICollectionView์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ํฐ ๋„์›€์ด ๋œ๋‹ค.๋ฌธ์ œ ์ƒํ™ฉCore Data์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ UITableView์— ํ‘œ์‹œํ•  ๋•Œ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.fetc
0
0
a year ago
3 min read

[iOS] Core Data ์ž๋™ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ์šฉ ๋ฐฉ๋ฒ•Core Data ๋ชจ๋ธ์„ ์ˆ˜์ •ํ•˜๋ฉด ์•ฑ์ด ํฌ๋ž˜์‹œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.์ด์œ ๋Š” Core Data์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ๋ณ€๊ฒฝ๋  ๋•Œ, ๊ธฐ์กด ๋ฐ์ดํ„ฐ์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.๋ฌธ์ œ ์ƒํ™ฉCore Data ๋ชจ๋ธ์— ์ƒˆ๋กœ์šด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์•ฑ์„ ์‹คํ–‰ํ•˜์ž ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.Error Domain=NSCo
0
0
a year ago
3 min read

[iOS] ์‹œ์Šคํ…œ ์„ค์ •์— ๋”ฐ๋ผ ๋‹คํฌ๋ชจ๋“œ ์ ์šฉํ•˜๊ธฐiOS์— ์‹œ์Šคํ…œ ์„ค์ •์— ๋”ฐ๋ผ ๋‹คํฌ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด,AppDelegate.swift์˜ didFinishLaunchingWithOptions ๋ฉ”์„œ๋“œ์— ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow?
0
0
a year ago
1 min read

[iOS] API ํ‚ค ๋ณด์•ˆ ์ ์šฉํ•˜๊ธฐํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— Google Books API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ปค๋ฐ‹์„ ํ•˜๋ ค๋‹ค API ํ‚ค๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋ถ€๋žด๋ถ€๋žด ์ฐพ์•„๋ณธ API ํ‚ค์— ๋ณด์•ˆ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.์šฐ์„ , ๋‚ด๊ฐ€ ์•Œ์•„๋ณธ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ์„ธ ๊ฐ€์ง€๋‹ค.Info.plist์— API ํ‚ค ์ €์žฅ ํ›„ ๊ฐ€์ ธ์˜ค๊ธฐ.xcconfig ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌKeyChain ๋˜๋Š” ์„œ๋ฒ„์—์„œ
0
0
a year ago
3 min read

[iOS] (iOS ๊ฐœ๋ฐœ ์Šคํƒ€ํ„ฐ ์‹œ์„ ์—์„œ์˜) SwiftUI vs UIKitSwiftUI์™€ UIKitiOS ์•ฑ์„ ๊ฐœ๋ฐœํ•  ๋•Œ UI๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ SwiftUI์™€ UIKit ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.SwiftUI2019๋…„ WWDC์—์„œ ๋“ฑ์žฅํ•œ ์ตœ์‹  UI ํ”„๋ ˆ์ž„์›Œํฌ์„ ์–ธํ˜•(Declarative) ๋ฐฉ์‹์œผ๋กœ UI ์ž‘์„ฑ ๊ฐ€๋Šฅ์ฝ”๋“œ๋งŒ์œผ๋กœ UI ์ƒ์„ฑ ๊ฐ€๋Šฅ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๊ฐ•๋ ฅํ•จUIKitiOS 2.0๋ถ€ํ„ฐ ์‚ฌ์šฉ๋œ UI ํ”„๋ ˆ์ž„์›Œํฌ์˜ค๋žซ๋™์•ˆ iOS ๊ฐœ๋ฐœ์˜ ํ‘œ์ค€์Šคํ† 
0
0
a year ago
6 min read

[iOS] ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ(CoreData)์˜ ์ดํ•ดCoreData๋ž€?CoreData๋Š” iOS ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, SQLite ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.CoreData์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†ŒNSManagedObjectContext: ๋ฐ์ดํ„ฐ์˜ CRUD(์ƒ์„ฑ, ์ฝ๊ธฐ, ๊ฐฑ์‹ , ์‚ญ์ œ) ์ž‘์—…์„ ๋‹ด๋‹นNSManagedObjectModel: ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ •์˜ํ•˜๋Š” ์—ญํ• NSPersistentSto
0
0
a year ago
1 min read

[iOS] ์•ฑ์˜ ์‹คํ–‰ ์ˆœ์„œ์ธ ์ƒ๋ช… ์ฃผ๊ธฐ(Life Cycle)์˜ ์ดํ•ดiOS ์•ฑ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๊ฐœ์š”iOS ์•ฑ์€ ์‚ฌ์šฉ์ž์˜ ๋™์ž‘๊ณผ ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ฑฐ์นœ๋‹ค.์ด ๊ณผ์ •์—์„œ ์•ฑ์ด ์‹คํ–‰๋˜๊ณ  ์ข…๋ฃŒ๋˜๋Š” ๊ณผ์ •์ด ๊ฒฐ์ •๋œ๋‹ค.UIApplication์˜ ์ƒํƒœ ๋ณ€ํ™”์•ฑ์˜ ์ƒํƒœ ๋ณ€ํ™”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง„๋‹ค.Not Running: ์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœInactive: ์•ฑ์ด ์‹คํ–‰ ์ค‘์ด์ง€๋งŒ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ์ƒํƒœActive: ์•ฑ์ด
0
0
a year ago
2 min read



SwiftiosSwiftUIUIKitMVVMClean ArchitectureCoordinator PatternUIRxSwiftCombinefirebaseOAuthOAuthProvider
์•„์ง ๋Œ“๊ธ€์ด ์—†์–ด์š”