iOS&Swift (21) 썸네일형 리스트형 Library와 Framework 언제 사용해야 할까?(with. iOS) 안녕하세요.최근 프로젝트에 모듈화를 적용해 보면서 Library와 Framework에 대해서 나아가 Static과 Dynamic은 어떤 차이인지 정리해 보고, 상황에 따라 어떤 것을 선택해야 하는지 정리해 보기 위해 이 글을 작성합니다.Library와 FrameworkLibrary와 Framework는 공통된 목적의 소스 코드를 묶어 독립적으로 배포할 수 있다는 공톰점이 있다. 때문에 둘은 모듈화의 도구로 사용된다. 하지만, 둘이 완전이 동일한 동작을 한다면 Apple은 둘을 분리하지 않았을 것이다.둘의 차이는 천천히 알아보도록 하고, Library 먼저 살펴보겠다.Library란Library는 소스 코드와 데이터들의 집합이다. 독립적으로 배포 가능하기 때문에 재사용성이 높은 소스 코드를 Library를.. Swift Data VS Core Data 안녕하세요.이번에 SwiftData를 직접 사용해 보기 위해SwiftData 출시 전에 메인으로 사용된 CoreData와 어떤 차이가 있는지 정리한 글입니다.Core DataCore Data는 최상위 객체로 Container가 있으며, Container는 Model, Context, Coordinator를 생성 및 관리한다.ModelNSManagedObjectModel은 CoreData를 통해 저장하고자 하는 데이터 모델을 나타내는 객체이며, .xcdatamodeld를 통해 모델 구성이 가능하다..xcdatamodeld를 통해 Entity, Attribute, Relationship를 설정할 수 있으며, .xcdatamodeld 파일을 빌드하면, .momd 파일이 생성되는데 이를 읽어 NSManagedO.. [Swift] @Environment에 대해 알아보기(Property Wrapper 3편) 안녕하세요. 이전 글에서 @ObservedObject, @StateObject에 대해 알아봤고, 오늘은 마지막 @Environment에 대해 알아보겠습니다. @Environment A property wrapper that reads a value from a view’s environment. 출처: 공식문서 공식 문서에는. @Environment Property Wrapper는 View 환경에 저장된 EnvironmentValues 을 읽어오기 위한 Property Wrapper이고, key path를 통해 EnvironmentValues을 지정하고, 읽어올 수 있다고, 나와있습니다. 위 같은 글을 읽었을 땐 바로 이해가 되질 못했습니다. 때문에 직접 사용해 보면서 정리해 보겠습니다. 예제를 통해 사.. [Swift] @ObservedObject와 @StateObject의 차이에 대해 알아보기(Property Wrapper 2편) 안녕하세요. 이전 글에선 @State, @Binding, @Published 3가지 Property Wrapper에 대해 알아보았고, 이번엔 @ObservedObject, @StateObject에 대해 알아보겠습니다. @ObservedObject와 @StateObject A property wrapper type that subscribes to an observable object and invalidates a view whenever the observable object changes. 출처: 공식문서 둘은 비슷한 상황에 사용되고, 공통점이 많기 때문에 같이 정리해 보겠습니다. @ObservedObject와 @StateObject는 ViewModel 객체와 같은 반응형 객체를 만들 때 사용되는 P.. [Swift] @State, @Binding, @Published 대해 알아보기(Property Wrapper 1편) 안녕하세요. 오늘은 SwiftUI를 접하면서 동시에 Property Wrapper 또한 접하게 되면서 주로 사용하는 것들에 대해서 정리할 필요성을 느껴 Property Wrapper에 대해 작성해 보려 합니다. 때문에 이번에 알아볼 Property Wrapper를 소개하면, @State @Binding @Published @ObservedObject @StateObject @Environment 위 6가지에 대해 알아볼까 합니다. 6가지 외에도 더 많기도 하고, 직접 커스텀 해서 만들 수도 있지만, 프로젝트하면서 가장 많이 사용했던 것들만 뽑아봤습니다. 사실 6개도 많아서 2편으로 나눠 작성해보려 합니다. 먼저, 프로젝트 하면서 가장 많이 사용되었던 State 부터 알아보겠습니다. @State A pro.. [Swift] Alamofire의 RequestInterceptor을 사용해 토큰 갱신하기 안녕하세요. 이번에 프로젝트를 진행하면서 JWT를 통한 인증 방식을 사용했는데 앱 같은 경우 accessToken의 유효기간이 있어 refreshToken을 사용해 토큰을 갱신 받아야 합니다. 때문에 오늘 알아볼 것은 좀 더 간편하게 accessToken을 갱신 받을 수 있는 방법에 대해 알아보겠습니다. RequestInterceptor Type that provides both `RequestAdapter` and `RequestRetrier` functionality. `RequestAdapter` 및 `RequestRetrier` 기능을 모두 제공하는 유형입니다. RequestInterceptor는 Alamofire 라이브러리에서 제공하는 프로토콜 입니다. 프로토콜을 보면, adapt와, retry.. Combine 뽀개기 4장: Scheduler Scheduler A protocol that defines when and how to execute a closure. 클로저를 실행하는 시기와 방법을 정의하는 프로토콜입니다. Scheduler를 사용하는 이유는 우리가 구현한 클로저가 언제 실행될지, 무슨 쓰레드에서 실행될지 제어하기 위해서이다. 때문에 Combine에선 DispatchQueue OperationQueue RunLoop ImmediateScheduler 위와 같은 Scheduler를 제공한다. 위 DispatchQueue, OperationQueue를 이용하여 우린 클로저가 무슨 쓰레드에서 실행될지 제어해줄 수 있고, RunLoop 통해 어떠한 RunLoop에서 실행될 지 결정해 줄 수 있다. ImmediateScheduler는 생소.. Combine 뽀개기 3장: Subject Subject A publisher that exposes a method for outside callers to publish elements. 외부 호출자가 요소를 게시할 수 있도록 메서드를 노출하는 게시자입니다. Subject또한 프로토콜이다. Subject도 쉽게 생각하면, publisher의 한 종류이다. protocol Subject : AnyObject, Publisher 왜냐하면, Subject 또한 publisher를 채택받고 있기 때문이다. 자그럼 둘은 무슨 차이냐! 일반 publisher 같은 경우 선언과 동시에 방출될 값이 정해진다. 예를 들어, Just 같은 경우에도 let justPublisher = Just("Combine 첫 교시") 정해진 "Combine 첫 교시"라는 값.. 이전 1 2 3 다음