반응형 분류 전체보기109 [iOS/Xcode] EXC_BAD_ACCESS 에러: Thread 1: EXC_BAD_ACCESS 원인: 해당 에러 원인이 다양하므로 원인 파악 필요 해결: 에러 원인 파악을 위한 아래 설정 필요 XCode 상단 Product 메뉴 -> [Scheme] -> [Edit Scheme] 탭 선택 Run ->[Diagnostics] 탭 -> [Zombie Objects] 체크 로그를 통해 해당 에러가 발생한 원인을 확인할 수 있음. 2024. 3. 8. [iOS/Xcode] Xcode Archive Stuck Xcode Archive 멈추는 이슈와 관련 내용을 기록합니다. 에러 내용: Xcode 아카이빙 멈추는 이슈 발생 원인: Firebase Crashlytics 스크립트 추가하면서 발생한 이슈 # Type a script or drag a script file from your workspace to insert its path. if [ "${CONFIGURATION}" != "Debug" ]; then "${PODS_ROOT}/FirebaseCrashlytics/run" "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist -p ios ${.. 2024. 3. 8. [iOS/Xcode] Missing file libarclite_iphoneos.a (Xcode 14.3) Xcode 14.3 이상 버전에서 Pod 관련 에러 발생한 내용을 기록합니다. 에러 내용: SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a'; try increasing the minimum deployment target 원인: Xcode 14.3 부터 위 에러 발생 해결: Podfile에 아래 내용 추가 post_install do |installer| installer.generated_projects.each do |project| project.targets.e.. 2024. 3. 8. [RxSwift] Traits Part 2. RxCocoa Traits RxSwift Traits 기반으로 UI 개발을 위해 특화된 RxCocoa 에서 사용하는 Wrapper 구조체 Driver UI 계층에서 반응형 코드를 작성하는 직관적인 방법을 제공하거나 앱을 Driving 하는 데이터 스트림을 모델링하는 데 사용됨 error 을 방출하지 않음, 시퀀스 오류가 발생하더라도 앱은 input 에 대해서 반응하지 않음. Main Scheduler 사이드 이펙트를 공유함(share(replay: 1, scope: .whileConnected)) 기본 값으로 가장 최근에 방출했던 아이템 값을 방출함. 구독할 때마다 새로운 Observable 이 생성되지 않고 공유할 수 있음. .while Connected: Subscriber 가 0개가 되고 dispo.. 2024. 3. 8. [RxSwift] Traits Part 1. RxSwift Trait 관한 내용을 기록합니다. Traits Observable 시퀀스의 특성을 정의하는 Wrapper 구조체 직관적이고 작성하기 쉬운 코드를 작성하는데 도움을 줌 .asObservable() 호출을 통해 Observable 시퀀스로 변환될 수 있음. Traits 사용 이점 코드 간결성 및 가독성 향상 특정 상황에 맞는 Observable 시퀀스 생성 및 사용 용이 유지 관리 및 테스트 용이성 향상 Single 단일 element 또는 error를 방출 API 호출 결과 값 또는 데이터베이스에서 단일 레코드를 가져올 때 유용 .asSingle() 호출을 통해 Single 로 변환 가능 API 결과 예시 func fetchAllItems() -> Single { return Single... 2024. 3. 8. [RxSwift] Error Handling RxSwift에서 에러 핸들링에 관한 내용을 기록합니다. RxSwift에서의 에러 관리 Catch error 를 새로운 Observable 또는 값으로 처리 catch(_ handler:) 클로저를 매개변수로 받아 완전히 다른 형태의 observable로 변환 public func `catch`(_ handler: @escaping (Swift.Error) throws -> PrimitiveSequence) -> PrimitiveSequence { PrimitiveSequence(raw: self.source.catch { try handler($0).asObservable() }) } 예시 func getUser(id: Int) -> Observable { return network.getUser(id.. 2024. 3. 8. [iOS] Carthage Carthage의 특징과 사용법을 기록합니다. Carthage 오픈소스 라이브러리를 관리해주는 Dependency Manager decentralized(탈중앙화) Swift 코드 기반 바이너리 프레임워크 제공 미리 빌드된 프레임워크 사용(오래 걸릴 수 있는 단점 존재) → CocoaPods 이용할 때 보다 빠른 빌드 속도 프로젝트 파일이나 빌드 설정을 수동으로 해야 함. → Xcode 설정 또는 프로젝트 파일에 영향을 주지 않음. .xcodeproj로 프로젝트 실행 라이브러리 업데이트 및 제거가 쉬움. CI 서버에 쉽게 통합시킬 수 있음. 비교적 최신 프레임워크라 지원하지 않는 라이브러리들이 있음. 동적 프레임워크에서만 작동함. Carthage 적용해보기 1. Homebrew를 이용해서 carthage.. 2023. 1. 12. [Design Patterns] ReactorKit ReactorKit에 관해 정리한 것을 기록합니다. ReactorKit 반응형 및 단방향 Swift 애플리케이션 아키텍처를 위한 프레임워크 옵저버블 스트림을 통하여 각 User Action & View States 레이어에 전달 View만 Action을 방출하며, Reactor만 States를 방출함 ReactorKit’s Design Goal Testablility → 뷰에서 비즈니스 로직을 분리하여 테스트하기 쉬워짐. Start Small → ReactorKit은 애플리케이션 전체가 이를 따를 필요 없이 부분적으로 적용할 수 있음. → ReactorKit을 사용하기 위해 전체 코드를 재작성할 필요 없음. Less Typing → ReactorKit은 단순한 일에 복잡한 코드를 회피하며, 다른 아키텍처.. 2023. 1. 10. [Swift] Equatable, Hashable Equatable과 Hashable 프로토콜에 관해 기록합니다. Equatable protocol Equatable { static func == (lhs: Self, rhs: Self) -> Bool } - 값이 동일한 지 비교할 수 있는 타입 - 이 프로토콜을 준수하는 타입은 == 혹은 !=를 사용하여 비교할 수 있음. - 기본 데이터 타입 Int, String, Double 등 Hashable 프로토콜을 준수하고 있어 값을 비교할 수 있음. Hashable protocol Hashable: Equatable { var hashValue: Int { get } } - 정수 hash 값을 제공하는 타입 - hash → 해시 함수에 의해 얻어지는 값 → 해시값, 해시코드, 해시 체크섬 - 해시 함수: 임.. 2023. 1. 3. [iOS] Crashlytics 적용 비정상 종료(앱 충돌)를 추적하기 위한 Firebase Crashlytics 적용하는 방법을 기록합니다. 1. Firebase Console - 파이어베이스 콘솔에서 프로젝트 추가 및 다운로드 받은 GoogleService-info.plist 파일 프로젝트에 추가 2. 프로젝트 CocoaPod 설치 및 Crashlytics 추가 - 프로젝트 폴더 경로에서 Pod 생성 pod init - Podfile에 아래 코드 추가 pod 'Firebase/Analytics' pod 'Firebase/Crashlytics' - Pod 설치 pod install 3. Firebase Configure - AppDelegate 파일에 아래 코드처럼 추가 import FirebaseCore @main class AppDel.. 2023. 1. 3. 이전 1 2 3 4 5 ··· 11 다음 반응형