일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 네트워크 통신
- swift 6
- Tuist Swift
- xcode
- Tuist
- swift 5.9
- KeyPath
- swift
- SwiftUI
- arc
- 카카오뱅크 ios
- JSON
- SeSAC
- combinecocoa
- Subscribe
- Swift Tuist
- realm
- observable
- ios
- RxSwift
- Firebase
- ios database
- Combine
- uitableviewdiffabledatasource
- GCD
- swift database
- ribs
- Subject
- Firebase Analytics
- swift db
- Today
- Total
목록swift (24)
천원의 개발

기존에 codebase로 UI를 작성하다 보면 빌드를 해야 확인할 수 있어서 번거로울 때가 종종있습니다. 그래서 SwiftUI의 PreviewProvider를 활용해서 보면서 작업이 가능하도록 해보겠습니다. 1. ViewController Extension UIViewControllerRepresentable를 사용해서 뷰컨을 SwiftUI에서 사용이 가능하도록 Extension 해줍니다 import UIKit import SwiftUI extension UIViewController { private struct Preview: UIViewControllerRepresentable { let vc: UIViewController func makeUIViewController(context: Contex..
전처리문? - 컴파일 이전에 미리 처리되는 문장을 말합니다. 또한 선행처리기라고도 말합니다. 여기서 컴파일러는 여러분들이 작성하신 코드를 컴파일하기 전에 전처리문에서 정의해 놓은 코드를 우선적으로 실행하게 됩니다. Swift에서 사용하는 전처리문 디버그 모드에서 출력 #if DEBUG print("디버그") #endif 메인 앱과 위젯 구분 #if MAIN_APP print("main app") #endif #if WIDGET print("widget") #endif OS 구분 #if os(iOS) print("iOS") #elseif os(macOS) print("macOS") #elseif os(watchOS) print("wathOS") #endif

메모리에는 총 4가지의 영역이 있습니다. 가장 먼저 코드 영역은 작성한 코드가 기계어 형태로 저장이 되는 공간입니다. 컴파일 타임에 결정이 나며 Read-Only 형태로 구성되어 있습니다. 다음으로 데이터 영역입니다. 여기에는 전역변수 Swift에서는 Static으로 선언한 Type 변수들이 할당되는 공간입니다. 다음으로 힙 영역입니다. 동적으로 메모리를 할당하는 공간입니다. 프로그래머가 직접 할당 및 해제를 해주어야 하지만 Swift에서는 ARC 덕분에 직접 해제 및 할당하지 않아도 됩니다. 참조 타입의 값들이 힙 영역에 저장이 됩니다. 그럼으로 런타임에 크기가 결정이 납니다. 마지막으로 스택 영역입니다. 지역 변수 및 매개 변수 등이 스택 영역에 저장이 됩니다. 이 영역의 변수들은 함수 호출이 종료되..
Result ? Swift 5.0 부터 지원하는 에러를 처리하는 방법입니다. Result 타입 정의 enum Result { case success(Success) case failure(Failure) } enum을 활용하여 success와 failure의 case로 구분 지어주고 제네릭을 타입을 연관값에 넣어주어 사용합니다. 어떻게 사용할지 감이 안 잡히시죠 한번 같이 사용해 봅시다. Error프로토콜을 채택한 APIError enum APIError: String, Error { case invalidRessponse = "응답이 없습니다." case noData = "데이터가 없습니다." case failedRequest = "요청에 실패 하였습니다." case invalidData = "검색어와..
URLSession ? - 앱이 서버와 통신하기 위해 애플이 만들어둔 API입니다. - 서버 통신을 위한 라이브러리인 Alamofire, moya 등 의 기반이 되는 API입니다. - 서버에서 받아온 데이터를 어떤식으로 동작할지를 설정할 수 있습니다. ex) 타임아웃, 캐시 정책, 백그라운드 데이터 전송 등 URLSessionConfiguration - 서버와 통신시 세부적인 동작과 정책을 설정할 수 있습니다. • Shared Session - 싱글턴 패턴 구조로 기본 설정이 되어 있어 단순한 네트워크 요청을 할 때 주로 사용이 되고, 커스터마이징은 할 수 없습니다. - 구현이 간단한 장점이 있지만, 백그라운드 전송을 지원하지 않습니다. let url = URL(string: "https://www.dh..

마이그레이션? - Realm 데이터베이스를 사용하여 개발하다 보면 데이터베이스의 스키마 구조를 변경해야 할 경우가 생기는데 이런 경우 앱 충돌이 발생합니다. 개발 시에는 앱을 새로 삭제 후 실행해 주면 문제없이 작동하지만, 앱을 출시한 상태에서 스키마 구조를 변경하고 싶을 때 사용하는 게 마이그레이션 입니다. Schema Version - 마이그레이션을 관리 하기 위한 스키마 버전입니다. 처음 상태는 0으로 시작합니다. - 컬럼의 추가나 삭제 같은 동작은 Schema Version을 증가 시 키는 것만으로 마이그레이션이 이루어집니다. 스키마 버전을 출력해주는 코드입니다. do { let version = try schemaVersionAtURL(fileURL!) print("Schema Version: ..