[iOS] gaurd let _ = try? await evaluateJavaScript 오류
서비스 하고 있는 App 하나의 리팩토링을 끝낸후 나머지 앱을 리팩토링 하던 중 아래와 같은 오류 발생 Thread 1: Swift runtime failure: Unexpectedly found nil while implicitly unwrapping an Optional value Crash 발생시 함수 스택에도 표기되지 않고 storyboard나 xib파일이 아예없기에 아주 당황 ;;;혹시몰라 다시 체크해보았는데 당연히 코드레벨에서 옵셔널을 강제 언래핑하는곳이 아무곳도 없었음 크래시가 발생하는 화면 처음부터 디버깅 시작아래 함수 호출 시 크래시 발생func getSectionPositions() async 기존에 리팩토링이 끝난 앱에서 공통코드로 뺀 부분이고 정상적으로 동작하는 것까지 검증이 끝난 ..
2025.05.11
no image
[iOS] KakaoOpenSDK에서 Concurrency 사용시 App Crash
App Crash Report에서 Concurrency 오류 발생KakaoLogin시 간혈적으로 App Crash가 발생을 확인 다양한 ThirdPartyLogin을 위해 async/await을 사용하고 있었기때문에 withCheckedThrowingContinuation로 감싼 형태였고특정 기기나 OS, 혹은 특정 유저마다 발생하는게 아니였고 같은 조건이여도 정상적으로 동작하는 경우가 있었고CheckedContinuation.resume(returning:)CheckedContinuation.resume(throwing:) 둘 모두에서 Crash가 발생하여 SDK에서 발생하는 문제임이라 생각하여 개발자 포럼에 확인 요청- iOS SDK에서 Concurrency 사용시 app crash iOS SDK에..
2025.05.11
[iOS] 앱 아이콘 앱 스토어 심사 없이 동적으로 바꾸기
Dynamic App Icon특정기간이나 특정 조건에서 앱 아이콘을 바꾸고 싶을 때 앱 배포를 하지 않고 앱 아이콘을 바꾸는 방법Assets 에 원하는 AppIcon(BIcon, CIcon, DIcon) 들을 추가Targets → Build Setting(All) → Alternate App Icon Sets 에서 Assets에 추가한 AppIcon(BIcon, CIcon, DIcon) 들을 입력UIApplication.shared.setAlternateIconName(String?:) 호출https://github.com/user-attachments/assets/345e9eda-495d-4ce7-a5f1-4d2f496ffb33 import UIKitclass ViewController: UIVie..
2025.04.20
Configurations 사용시 주의점
모듈화시 각 모듈에서 사용하는 ThirdParty Library들의 효율적인 관리를 위해 ThirdPartyKit이라는 모듈로 분리하여 사용하였다.App 테스트를 위해 Configurations를 각각 다르게 줘고 Scheme를 각각 설정하였다.Dev, QA, Release Scheme이다App-Release 스키마와 App-Dev 스키마는 정상적으로 실행되는데 App-QA 스키마는 아래와 같은 에러가 발생한다.Framework 'ThirdPartyKit' not foundLinker command failed with exit code 1 (use -v to see invocation)~/DerivedData/프로젝트이름/Build/Products의 폴더를 들어가 각각의 폴더를 확인해보면QA에만 Thi..
2024.11.17
[WWDC - 2023] Discover Observation in SwiftUI
What is Observation ?기본 데이터가 변경될 때 프레젠테이션을 업데이트하는 반응형 앱을 만듭니다.@Obserable 은 normal type의 property를 observable type으로 마킹하여 UI가 data의 변화에 대응할 수 있게 해주는 매크로@Obserable 은 Swift 컴파일러에게 명령을 내려서 코드를 확장형 Observable type으로 바꿔 SwiftUI가 뷰를 동작하게 만듬reference type, value type을 모두 지원@Published @State @Binding @ObservedObject 등 다른 프로퍼티 래퍼가 없어도 작동함각 property마다 @Published @State @Binding @ObservedObject 등을 붙인것을 data..
2024.08.10
[WWDC - 2021] Demystify SwiftUI ‐ Dependency (3/3)
[WWDC - 2021] Demystify SwiftUI ‐ Identity (1/3)[WWDC - 2021] Demystify SwiftUI ‐ Lifetime (2/3)[WWDC - 2021] Demystify SwiftUI ‐ Dependency (3/3)🤔 SwiftUI는 우리의 코드에서 어떤걸 볼까 ?IdentitySwiftUI가 여러번의 업데이트 동안 요소(element) 가 동일한것인지 다른것인지 인식(recognize) 하는 방법LifetimeSwiftUI가 뷰와 데이터의 존재(existence) 를 시간에 따라 추적하는 방법DependencySwiftUI가 인터페이스를 업데이트해야하는 시기(when) 와 이유 (why) 를 이해하는 방법이 세 가지 개념을 통해 SwiftUI는 변경해야할..
2024.07.31
[WWDC - 2021] Demystify SwiftUI ‐ Lifetime (2/3)
[WWDC - 2021] Demystify SwiftUI ‐ Identity (1/3)[WWDC - 2021] Demystify SwiftUI ‐ Lifetime (2/3)[WWDC - 2021] Demystify SwiftUI ‐ Dependency (3/3)🤔 SwiftUI는 우리의 코드에서 어떤걸 볼까 ?IdentitySwiftUI가 여러번의 업데이트 동안 요소(element)가 동일한것인지 다른것인지 인식(recognize)하는 방법LifetimeSwiftUI가 뷰와 데이터의 존재(existence)를 시간에 따라 추적하는 방법DependencySwiftUI가 인터페이스를 업데이트해야하는 시기(when)와 이유(why)를 이해하는 방법이 세 가지 개념을 통해 SwiftUI는 변경해야할 사항(wh..
2024.07.29
[WWDC - 2021] Demystify SwiftUI ‐ Identity (1/3)
[WWDC - 2021] Demystify SwiftUI ‐ Identity (1/3)[WWDC - 2021] Demystify SwiftUI ‐ Lifetime (2/3)[WWDC - 2021] Demystify SwiftUI ‐ Dependency (3/3)  🤔 SwiftUI는 우리의 코드에서 어떤걸 볼까 ?IdentitySwiftUI가 여러번의 업데이트 동안 요소(element)가 동일한것인지 다른것인지 인식(recognize)하는 방법LifetimeSwiftUI가 뷰와 데이터의 존재(existence)를 시간에 따라 추적하는 방법DependencySwiftUI가 인터페이스를 업데이트해야하는 시기(when)와 이유(why)를 이해하는 방법이 세 가지 개념을 통해 SwiftUI는 변경해야할 사항(..
2024.07.28
no image
[WWDC - 2020] Data Essentials in SwiftUI - @StateObject, @ObservableObject, @EnvironmentObject
[WWDC - 2019] Data Flow Through SwiftUI - @State, @Binding[WWDC - 2020] Data Essentials in SwiftUI - @StateObject, @ObservableObject, @EnvironmentObject요약SwiftUI는 View와 View의 State관리가 중요SwiftUI는 @State 를 통해 **Single Source of Truth(SOT)**를 나타낼수 있음SwiftUI는 @State 로 선언된 상태 프로퍼티의 저장소를 관리@Binding 을 통해 **Single Source of Truth(SOT)**에 접근 가능@Binding 을 할때는 @State 로 선언된 상태 프로퍼티의 이름에 prefix로 $표시를 추가해 사용S..
2024.07.22