일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- combine
- Concurrency
- RxSwift
- GCD
- SwiftUI
- dataflow
- firebase
- environmentobjet
- UIKit
- 달력
- stateobject
- arkit
- gesture
- swift
- auth
- Network
- 네트워크
- withAnimation
- ar
- fullscreencover
- CS
- ios
- WWDC
- Performance
- authentication
- 데이터최적화
- iphone
- Animation
- state
- realitykit
- Today
- Total
목록UIKit (25)
XLOG
1. Observation 이란?wwdc 23 에서 발표한 observation 은 프로퍼티의 변화를 추적하는 Swift 기능으로 같은 wwdc 23 에 발표한 swift 5.9에 신기능인 매크로를 사용하여 정의한 데이터 타입을 observable 하게 바꿔주는 기능이다.2. 사용방법정의한 class 에 @observable property wrapper 를 붙여준다.import Foundationimport Observation@Observable class DataModel { var count: Int = 0}이를 View 에서 사용할 땐 @State, @Environment, @Bindable, var 를 사할 수 있다. 여기서의 기준은View의 부분일 경우 @State, 글로벌하게 변수를 사용할..
사이드 프로젝트를 진행하면서 Tree 형태의 데이터 구조를 만들어 사용했다.데이터는 SwiftData 를 사용해서 저장을 했으며 Model 은 Hashable 을 상속시켰다.그런데 데이터를 수정하고 나서 한번씩 Fatal error 가 발생했다.테스트를 더 해보긴 해야겠지만 찾아본 바로 원인은 Hashable을 충족하기 위해서 Equatable 또한 상속시켜야 한다. Hashable 이 Equatable 을 상속해야하는 이유는 HashValue 의 비교를 위해서인데, 여기서 내가 실수한 부분은 == 에 정의할 때 비교 연산을 Hash 함수에 사용한 Propertie 와 달라서 였다.예를 들면class Model { let id: UUID = UUID() let name: String let s..
1. ObservableObservable = Observable sequence = seqquenece비동기이벤트를 만들고, emitting 한다.관찰 가능한 함수형태의 연산자next 를 통해 이벤트를 방출completed 이벤트를 통해 종료error 가 발생되더라도 종료된다.// just: 하나의 요소를 방출하는 Observable sequence 를 생성let just = Observable.just(1)// of: 여러 요소를 순서대로 방출하는 Observable sequence 를 생성let of = Observable.of(1,2,3,4,5)// from: array 를 취하며 array 내부 요소를 하나씩 방출하는 시퀀스를 생성let from = Observable.from([1, 2, 3,..
보통 앱 내의 데이터를 저장할 때 많이 사용하는 것이 UserDefault 와 CoreData 이다. UserDefault 의 경우 앱의 설정(라이트모드, 다크모드 등) 과 같은 간단한 데이터를 저장하는데 사용한다면, CoreData 의 경우 좀 더 복잡한 데이터를 저장하는데 사용한다고 한다.처음 Swift 를 접하고 코어데이터란게 있다 라는 얘기를 주변사람들에게 들었을 때는 DB 같은건가 하는 생각을 했었다.하지만 CoreData 는 단순히 데이터베이스라고 생각하긴 어렵다.CoreData 는 프레임워크다. 어플리케이션에서 offline으로 사용할 수 있는 영구적인 데이터를 저장, 관리를 도와주는 프레임 워크로 icloud 계정을 통해 다양한 device 에 데이터를 동기화까지 가능하게 해준다. 공식문서..
1. DiffableDataSource 란?Apple 이 WWDC19 에서 발표한 iOS 13 이상부터 사용이 가능한 UITableView, UICollectionView의 데이터 관리를 쉽게 하기 위한 도구이다.2. DiffableDataSource 의 특징선언적 업데이트DiffableDataSource 를 사용하게 되면 사용하고 싶은 데이터를 선언하여 적용할 수 있다.Snapshopt 기반데이터 소스를 직접 관리하는 것이 아닌 Snapshopt을 활용하여 스냅샷의 변경사항을 단순한 UI 뿐만이 아닌 애니메이션까지 적용한다.프레임 워크에서 자동으로 비교하여 적용하기에 특별한 관리 없이 최적화된 변화를 적용한다.3. 공식 문서DiffableDataSource 는 class 객체로 collectionVi..
IAP 는 In-App-Purchase 의 약자이다.우선 인앱결제를 하기 위해선 개발자계정, 상품등록된 앱, 또한 그 앱의 앱내구입 상품 등록이 필요하다.앱스토어에 앱을 올리면 수익화 카테고리에 앱 내 구입 항목이 있다.클릭하면 내 앱에 인앱결제를 할 수 있는 항목 추가가 가능하다.위에 과정을 보면 알 수 있듯이 결제는 앱스토어 서버를 통해 이루어 진다.우리의 앱은 앱스토어 서버를 통해 Transaction 을 받아서 인앱 결제 로직을 처리한다.인앱결제 상품은 총 4가지가 있다.소모성 항목비소모성 항목자동 갱신 구독비갱신형 구독그럼 In App Purchase 의 테스트 환경을 만들어보자. 실제 공부하는 사람들은 개발자 계정 및 출시한 앱이 없을 수 있다. 하지만 StoreKit에서는 StoreKit C..
GCD VS Concurrency동기화의 대한 처리, 같은 데이터에 접근을 위해 GCD 의 경우 뮤텍스, 세마포어 등을 이용해야 하나, Concurrency 는 컴파일 에러를 발생시킨다.즉 안정성이 높다GCDworkItem 당 하나의 스레드를 할당,스레드는 결국 메모리에 할당, thread explosion., 메모리 오버헤드를 발생시킬 수 있다Context switching 이 발생하며, 블록된 스레드가 어떤 자원을 lock 하고 있을 때 데드락 발생ConcurrencyCPU 성능 이상의 스레드를 생성하지 않는다또한 await으로 중단됐을 때 컨텍스트 스위칭을 하는 것이 아닌 같은 스레드에서 다음 함수를 실행우선순위 역전Concurrency는 FIFO 가 아니기 때문에 우선순위가 높은 작업이 들어오게 ..
TDD(Test Driven Development) 는 테스트 주도 개발이다. 초기 공부를 시작하다보면 자연스럽게 접하게 되는 용어이다. 왜 그런걸까? Swift 를 공부하면서 XCTest를 알기전, View를 만들고 확인하고 내부 로직을 만들어 View 붙이고를 반복했다. 메인 페이지라면 크게 문제는 없었지만 프로젝트 규모가 커지고, 내부에 view들을 확인하기 위해 simulator 를 돌리고, 원하는 페이지까지 이동해서 확인하고, 문제가 있으면 수정해서 다시 로직을 수정하고를 반복했다. 가끔은 Playground 를 만들어 테스트 해보고 프로젝트에 적용하기도 했다. 상당히 비효율적이다. XCTest 를 사용하면 이와 같은 문제를 해결할 수 있다. 각종 테스트를 할 수 있는 프레임워크다. 프로젝트 생..
[참고] 이 글은 ARKit의 사용법 보단, AR Kit을 사용하기 위해 사전 지식에 대한 정리라는 점을 참고해주시기 바랍니다. 필요에 의해 ARKit에 대한 공부를 해봤다. 몇년 전부터 많이 들려오는 AR(Augmented Reality)인 증강현실, 현실 세계에 가상을 더한 컨텐츠, AR 뜻만 알아도 AR kit은 증강현실을 구현하는 프레임워크라는 것을 알 수 있다. 역시나 공식문서를 보면 2d, 3d 요소를 라이브뷰(카메라로 찍는 현실세계) 에 표현하는 증강현실을 위한 프레임 워크라고 한다. 여기서 우리는 라이브뷰, 즉 카메라로 부터 현실세계의 데이터를 수집해야 한다. QR code 스캐너에 관한 글을 작성할 때 처럼 session을 사용할 것이라는 느낌이 온다. session을 시작하게 되면 처음..
이전 회사 면접에서 내 포트폴리오에 RestApi 를 활용한 프로젝트가 없어서, 회사에서 이런 요구사항이 오면 어떻게 해결할지에 대한 질문을 받았었다. 다행히 이전에 캘린더 관련 프로젝트를 진행하며 대한민국 공휴일 데이터를 어떻게 가져올 수 있을까 고민하면서 Rest Api 에 대한 공부를 했었다. 1. Rest Api 란 무엇일까? RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 출처 : https://aws.amazon.com/ko/what-is/restful-api/ 2. Swift에서 무엇을 사용할까? 그건 바로 URLSession, URLRequest 이다. URLSession 에 URLRequest를 사용하여 통신프로토콜을 사용..