일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Navigation
- uikit
- navigationsplitview
- xcodecloud
- Tuist
- github
- regex
- Firebase
- 정규표현식
- tuist #xcodecloud #ios #ci/cd #swiftlint #firebase
- ObjC
- SWIFT
- concurrency
- IOS
- UI
- xcode
- Alamofire
- SWIFTUI
- Git
- 모바일
- composablearchitecture
- test
- swiftdata
- combine
- 개발
- iOS 13.0+
- network
- ios18
- iOS 개발자
- TCA
- Today
- Total
목록iOS/비동기처리 (4)
iOS 개발 기록
📄목차AsyncStream코드 AsyncThrowingStream 코드AsyncStream vs CombineReference SwiftConcurrency를 공부하다가 AsyncStream를 사용할만한 일이 생겨 적용하며 정리해보았다. 다음과 같이 인증 화면에서 시간을 카운트다운 하는 기능을 AsyncStream를 사용해 적용해보려고 한다. AsyncStream비동기 Iterator를 제공하는 프로토콜인 AsyncSequence를 쉽게 구현할 수 있도록 제공되는 인터페이스 AsyncSequence를 준수하기 때문에 map, filter, contains 등 익숙한 고차함수 메소드를 사용할 수 있다. 코드 @MainActor func timerStream() -> AsyncStream { return A..
📄목차Continuationresume CheckedContinuationUnsafeContinuation코드 결론Reference ContinuationPush를 등록을 설정하던 도중에 여러 콜백 함수로 인한 장풍이 생기고 뭔가 가독성이 거슬려서 전에 공부했던 async/await로 장풍 좀 없애고 싶다는 생각이 들었다. 요즘엔 많은 메소드들이 async/await로 구현되어서 편하게 구현하고 있어서 편하게 변환하고 있던 중 막히는 순간이 왔다. /// 막혔던 예시 var pushTokenHandler: ((String?) -> Void)? = nil func pushTokenRegister(handler: @escaping (_ fcmToken: String?) -> Void) { self.pushT..
CompletionHandler 📄 목차 completionHandler func login(loginData: Login, completionHandler: @escaping () -> Void) { guard let webview = self.webview else { return } webview.evalFlexFunc("login", sendData: loginData) { data in log.debug(" PMS LOGIN! ") completionHandler() // ❗️실수하기 쉬운 포인트 } } // 사용 login(loginData: signInInfo) { print("로그인 성공") } @escaping 을 통해 콜백 기반 comopletionHandler를 실행. 단점 : 깜빡하..
async/await Date: 2023년 2월 1일 Tags: SwiftConcurrency 📄 목차 async public func data(from url: URL, delegate: URLSessionTaskDelegate? = nil) async throws -> (Data, URLResponse) async가 붙은 함수는 비동기라는 것을 나타낸다. 에러를 반환할 수 있을때에는 async throws 키워드로 선언, 호출할 때에는 try await 키워드로 호출하게 된다. await let (data, response) = try await URLSession.shared.data(for: reqeust) 비동기 함수 호출 시 잠재적 중단 시점을 지정하는 피연산자 동시성 컨텍스트에서만 실행 가능..