일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- darkmode
- Realm
- github
- JPA
- Firebase
- Git
- FLUTTER
- 개발자
- appstore
- Code
- 이미지
- MacOS
- Notification
- Apple
- Session
- geofencing
- Archive
- shorebird
- window
- error
- 한글
- rxswift
- IOS
- 웹뷰
- SwiftUI
- Xcode
- UIButton
- iOS16
- Swift
- mac
- Today
- Total
목록분류 전체보기 (275)
EEYatHo 앱 깎는 이야기

DeepLink앱이 실행되거나, 앱 내 특정 페이지에 도달할 수 있도록 하는 링크두가지 방식이 존재. ( URL Scheme, Universal Link ) URL Scheme가장 간단하고 오래된 딥링크 방식단점다른 앱과 딥링크의 중복 가능 (iOS는 마지막에 설치한 앱이 열림, 안드는 어떤 앱을 실행할지 선택)미설치시 앱스토어 이동이 안됨링크에 앱 스킴이 노출되기 때문에, 다른 앱이 작정하고 따라할 수 있다 (보안에 취약) Universer Link두가지 단점의 보완웹 주소를 이용한 딥링크 방식. ( 웹 주소는 유일. → 중복 걱정 x )앱이 설치되어 있지 않을 때 앱스토어로 이동시킴작동 원리앱에 어떤 도메인으로 실행될 것인지 설정 ( Capability - Associated Domains )..
SwiftUI 에는 뷰의 생명주기로 onAppear과 onDisappear만 제공한다. 나는 deinit을 감지하고 싶다.. 하지만 Struct는 deinit을 오버라이드 할 수 없는걸? class의 도움을 받는다. DeinitDetector /// 구조체의 deinit을 확인하기위한 class final class DeinitDetector { deinit { var typeString = "\(type(of: T.self))" /// "SomeView.Type" typeString.removeLast(5) /// "SomeView" print("🖐🖐🖐 \(typeString): \(#function)") /// "🖐🖐🖐 NotificationView: deinit" deinitCompletion?()..
TCA의 단점 WebSocket 을 구현하는 등, Stream을 받아와서 구독하고, 지속적으로 이벤트를 수신해야할 때 RetainCycle 이 무조건 발생한다. 즉, view의 사이클에 맞춰서 명시적으로 구독을 해제해줘야 한다. 이유 Action을 발생할 수 있는 엔드포인트를 .run을 통해 받아오고, Stream의 실행부에, 엔드포인트를 넣기 때문에 RetainCycle이 발생한다. ( 스트림실행부 -> 엔드포인트 -> 리듀서 -> 스트림 -> 스트림실행부 ) ( Class의 weak가 그립다.. ) 결과 때문에, view의 사이클에 맞춰서 명시적으로 구독을 해제해줘야, reducer도 잘 해제된다. ( onAppear, onDisappear 을 활용. ) ( 만약 init, deinit 으로 하고싶다..

프리뷰로 볼 때는 이상 없는데, 시뮬레이터에서 실행시 위 아래 검정색 패딩이 추가될 때가 있다. LaunchScreen 을 넣어주면 해결된다.
개요 UIKit 에 RxBus 를 사용하던 프로젝트를, SwiftUI + TCA 로 컨버팅하면서 발생한 일. SwiftUI.View 가 struct 라 내부 closure 에 weak self 를 사용할 수 없음. TCA 의 reducer 도 struct 로 제공 중. 기 사용중이던 RxBus 는 Rx를 통해 전역 이벤트를 수신해야함. 해당 과정에서 weak를 사용하지 못하기에, self 를 강한참조하여 메모리 릭 발생.. 해결 과정 & Solution SwiftUI(struct) 에서, 비동기 First Party인 NotificationCenter를 어떻게 사용하는지 탐구. -> Combine을 사용하여 수신하는 것을 발견. -> RxBus 이벤트를 받으면 Combine publisher를 sink하..

개요 사내 프로젝트(UIKit) 에 SwiftUI 적용해보니, Preview 에서 Crash 발생.. 응용 프로그램이 예기치 않게 종료되었습니다. 응용 프로그램을 다시 열려면 다시 열기를 클릭하십시오. 자세한 정보를 보고 Apple에 리포트를 보내려면 리포트를 클릭하십시오. ( 리포트 한 백번한듯.. ) 원인 요약 ( + Solution ) 원인 1. Xcode 의 Swift Package Manager 이 아닌, Tuist 의 Swift Package Manager 처럼. Package를 resolve해서 binary framework로 Firebase SDK를 사용함. 원인 2. FirebaseSDK 를 binary framework 로 사용해서, Build Settings - Linking - Ot..

개요 2023 Google I/O Extended 에서, 박제창님이 진행해주신 Flutter 2023 Recap 세션을 정리한다. 발표 자료 제공해주셔서 감사합니다. Flutter 2023 Recap Google I/O 2023 에서 Flutter 에 대한 내용을 Recap 하는 세션. [ 목차 ] Intro. What's Flutter 1. What's new in Dart and Flutter 2. Design for every device with Flutter and Material 3 3. What's new in Firebase's Flutter 4. Flutter's new rendering engine 5. Evolving Flutter's support for the Web 6. Flut..

Moya 에서 네트워크 통신에 접근할 수 있는 방법 2가지 Interceptor Plugin Interceptor #git RequestInterceptor의 구현체를 MoyaProvider.Session 에 넣기 let insterceptor = MyInterceptor() let session = Session(interceptor: insterceptor) let provider = MoyaProvider(session: session) adapt 로 모든 request 에 접근 retry 로 validation 에 실패한 response 에 접근 /// Type that provides both `RequestAdapter` and `RequestRetrier` functionality. publ..