일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Realm
- mac
- Session
- view
- Notification
- 웹뷰
- Firebase
- MacOS
- appstore
- iOS16
- geofencing
- github
- Xcode
- SwiftUI
- rxswift
- UIButton
- stack
- 개발자
- Apple
- IOS
- Code
- Swift
- FLUTTER
- window
- JPA
- Git
- error
- Archive
- darkmode
- 한글
- Today
- Total
목록SwiftUI (5)
EEYatHo 앱 깎는 이야기
4개 파일로 간단히 구현.UIKit의 ViewController로 QR기능을 구현 한 뒤, SwiftUI로 변경하는 예시코드들. ContentViewimport SwiftUIstruct ContentView: View { @State private var uriFromQR: String = "" var body: some View { ZStack { // QR Scanner QRCameraView(uriFromQR: $uriFromQR) VStack { Spacer() // Scan 한 값을 보여주는 T..
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) 에 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..