[Swift] @Environment에 대해 알아보기(Property Wrapper 3편)
·
Swift
안녕하세요. 이전 글에서 @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편)
·
Swift
안녕하세요. 이전 글에선 @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편)
·
Swift
안녕하세요. 오늘은 SwiftUI를 접하면서 동시에 Property Wrapper 또한 접하게 되면서 주로 사용하는 것들에 대해서 정리할 필요성을 느껴 Property Wrapper에 대해 작성해 보려 합니다. 때문에 이번에 알아볼 Property Wrapper를 소개하면, @State @Binding @Published @ObservedObject @StateObject @Environment 위 6가지에 대해 알아볼까 합니다. 6가지 외에도 더 많기도 하고, 직접 커스텀 해서 만들 수도 있지만, 프로젝트하면서 가장 많이 사용했던 것들만 뽑아봤습니다. 사실 6개도 많아서 2편으로 나눠 작성해보려 합니다. 먼저, 프로젝트 하면서 가장 많이 사용되었던 State 부터 알아보겠습니다. @State A pro..
[Swift] Alamofire의 RequestInterceptor을 사용해 토큰 갱신하기
·
Swift
안녕하세요. 이번에 프로젝트를 진행하면서 JWT를 통한 인증 방식을 사용했는데 앱 같은 경우 accessToken의 유효기간이 있어 refreshToken을 사용해 토큰을 갱신 받아야 합니다. 때문에 오늘 알아볼 것은 좀 더 간편하게 accessToken을 갱신 받을 수 있는 방법에 대해 알아보겠습니다. RequestInterceptor Type that provides both `RequestAdapter` and `RequestRetrier` functionality. `RequestAdapter` 및 `RequestRetrier` 기능을 모두 제공하는 유형입니다. RequestInterceptor는 Alamofire 라이브러리에서 제공하는 프로토콜 입니다. 프로토콜을 보면, adapt와, retry..
Combine 뽀개기 4장: Scheduler
·
Swift
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
·
Swift
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 첫 교시"라는 값..