본문 바로가기

분류 전체보기108

[iOS] 타사 SDK 요구 사항 변경 예정 Upcoming third-party SDK requirements24년 5월 1일부터 앱스토어 커넥트에 제출되는 앱은 privacy manifest 가 제공되지 않으면 리젝됨.타사 SDK는 개발자나 사용자도 모르게 개인정보 보안을 취약하게 만들 수 있음.

2024. 3. 22.

[Design Patterns] Clean Architecture 클린 아키텍처에 관한 내용을 기록합니다. 클린 아키텍처 로버트 C. 마틴(Uncle Bob)에 의해 처음 제안한 아키텍처 대부분의 아키텍처는 공통적인 목표가 있는데, 계층을 분리하여 관심사를 분리하는 것임. 각 아키텍처에는 최소 하나의 business rule을 위한 계층과 인터페이스를 위한 계층이 있음. business rule: 비즈니스 요구 사항을 반영하여 데이터를 처리하는 것을 말함. 각 아키텍처는 아래와 같은 특징들이 있음. Independent of Frameworks: 아키텍처는 스포트웨어 라이브러리의 존재에 의존하지 않음. Testable: 비즈니스 로직은 UI 및 DB, 웹 서버 또는 기타 외부 요소 없이 테스트할 수 있음. Independent of UI: UI는 시스템을 변경하지 않고.. 2024. 3. 12.
[iOS] Developer Mode 개발자 모드에 관해 기록합니다. 개발자 모드란? iOS 16과 watchOS 9에서 부터 사용할 수 있음. Default로 꺼져있으며, 개인정보 보호 및 보안 → 개발자 모드에서 켤 수 있음. 리부트와 시스템 업데이트를 해도 유지됨. 디벨로퍼 모드 설정을 자동화할 수 있는 툴이 있음. 개발자 모드가 왜 필요하지? 개발자가 아닌 대다수의 사용자에 대한 보안을 더욱 향상시킴. targeted attacks으로 부터 개발자 기능이 남용되고 있음. 대부분의 사용자는 개발자 기능이 디폴트로 필요하지 않음. 개발자 모드와 배포 대부분의 흔한 배포와 테스팅 흐름은 개발자 모드를 필요로 하지 않음. TestFlight Enterprise (In-House) distribution App Store 개발자 모드는 오직 .. 2024. 3. 12.
[RxSwift] Deferred deferred 구독자가 구독하기 전까지 옵저버블을 생성을 지연시켜, 구독 시점에 각 구독자 별로 새로운 옵저버블을 생성 구독 시점에 항상 Observable 을 생성하므로 최신 데이터를 제공하는 데 사용될 수 있음. (네트워크 요청 등) 구현부 public static func deferred(_ observableFactory: @escaping () throws -> Observable) -> Observable { Deferred(observableFactory: observableFactory) } 예시 코드 func createObservable() -> Observable { return Observable.just(Date().timeIntervalSince1970) } Observable.. 2024. 3. 11.
[RxSwift] Relay Relay Subject Wrapping 하여 기능 확장 Subject 와 유사하지만 Next 이벤트만 발생하며, Completed 와 Error 이벤트는 발생하지 않음.→ 스트림이 계속 유지되어 UI Event 와 바인딩하여 사용하기 적합 Dispose() 호출되어야 메모리 해제 RxCocoa 임포트 필수 .accept 로 데이터 방출 PublishRelay 또는 BehaviorRelay 는 기존 PublishSubject 와 BehaviorSubject 를 Wrapping 한 것으로 기존 개념은 Publish 와 Relay 차이 말고는 같은 방식 Subject 대신 Relay 를 사용하는 이유 Subject 는 메모리 관리가 명확하지 않아 메모리 누수가 발생할 가능성이 있지만 Relay 는 Dispo.. 2024. 3. 11.
[iOS/Xcode] 아카이브했을 때 발생하는 UIInterfaceOrientation 이슈 에러 내용: Asset validation failed Invalid bundle. The “UIInterfaceOrientationPortrait” orientations were provided for the UISupportedInterfaceOrientations Info.plist key in the {Project Bundle Identifier} bundle, but you need to include all of the “UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight” ori.. 2024. 3. 8.
[iOS/Xcode] DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead 에러 내용: DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead 원인: Xcode 15.0 에서 iOS17 시뮬레이터를 사용할 수 있게 되면서 에러 발생 해결: CocoaPods 1.13.0 버전에서 버그 수정 // 최신 버전으로 업데이트 gem install cocoapods --pre // 그리고 업데이트해줘야함 pod update // 버전 확인 pod --version Ref. https://stackoverflow.com/questions/77219650/dt-toolchain-dir-cannot-be-used-to-evaluate-library-search-paths-use-tool.. 2024. 3. 8.
[iOS/Xcode] Error ITMS-9017: “Invalid App Store Icon” 에러 내용: Error ITMS-90717: "Invalid App Store Icon. The App Store Icon in the asset catalog in 'YourApp.app' can't be transparent nor contain an alpha channel." 원인: 앱 아이콘 알파 채널을 포함할 수 없음. 해결: 앱 아이콘 알파 채널을 없애야 함. 아이콘 이미지 ‘미리보기’로 열기 → 파일 탭 내보내기 선택 → ‘알파’ 체크 해제 Ref. https://stackoverflow.com/questions/46585809/error-itms-90717-invalid-app-store-icon 2024. 3. 8.
[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.