728x90

분류 전체보기 298

[SOLID] OCP (Open-Closed Principle)

# OCP란?확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. 즉, 책임을 확실히 분리하도록 소스 코드 의존성을 확실히 조직화해야 한다. # 예시## 컴포넌트 관계는 단방향A 클래스 -> B 클래스라면, A 클래스는 B 클래스에 대한 의존성을 가지고 있지만 B 클래스는 A 클래스에 대해 전혀 모르는 상태.(A 클래스가 수정되더라고 B 클래스는 수정되지 않음.) 나아가서 A 컴포넌트 -> B 컴포넌트라면, A 컴포넌트는 B 컴포넌트에 대해 의존하고 있음. 즉, A 컴포넌트에서 발생한 변경으로부터 B 컴포넌트가 보호됨. 위 그림을 예를 들면, Presenter에서 발생한 변경으로부터 Controller는 보호되고, Controller에서 발생한 변경으로부터 Interactor가 보호됨. ## 방향성 ..

Clean Architecture 2024.06.18

[SOLID] SRP (Single Responsibiliy Principle)

# SRP (단일 책임 원칙)이란?하나의 모듈은 하나의 액터에 대해서만 책임져야 한다. 즉, 응집성이 높아야 한다.[참고] 응집성(cohesive)이란, 단일 액터를 책임지는 코드를 함께 묶어주는 정도를 뜻한다. # SRP를 위반할 경우코드를 수정할 때, 관련 없는 액터에게도 영향을 미친다.코드 머지 시 충돌이 발생할 확률이 높아진다. # SRP를 위반한 예시calculatePay() 메서드는 회계팀에서 기능을 정의. CFO 보고를 위해 사용reportHours() 메서드는 인사팀에서 기능을 정의. COO 보고를 위해 사용save() 메서드는 DBA가 기능을 정의. CTO 보고를 위해 사용calaulatePay() 메서드와 reportHours() 메서드는 내부에서 regularHours() 메서드를 ..

Clean Architecture 2024.06.17

[WWDC21] Distribute apps in Xcode with cloud signing

안녕하세요. 오느른 Xcode에서 App Store Connect에 앱 업로드하는 방법과 cloud signing 관련해서 가볍게 알아볼게요. 공부하기 싫어서 억지로 하는거 아님...ㅎ # Xcode to App Store Connect우선 App Store Connect가 뭔지 알아야겠죠? TestFlight를 사용하든 AppStore에 배포를 하든 우선 Xcode를 통해 App Store Connect에 앱 빌드를 업로드해야 해요.  # Distribution AppApp Store Connect에 앱을 업로드하려면 Archive를 먼저 해야 합니다.  Archive는 metadata를 포함한 앱의 developer-signed release build를 생성합니다. Archive가 완료되면 자동으로..

WWDC 2024.06.10

@propertywrapper

안녕하세요. 대충은 알지만 대충 알고 있던 @propertywrapper에 대해서 알아볼게요. # @propertywrapper란?propertywrapper는 프로퍼티가 저장되는 방식을 관리하는 코드와 프로퍼티를 정의하는 코드를 분리하는 역할을 합니다. 예를 들어, 프로퍼티에 값을 저장하기 전에 thread-safety 검사를 해야 하는 상황이 있다고 가정해 볼게요. 이 경우, 모든 프로퍼티에 대해 thread-safety 검사를 하는 코드를 작성해야 합니다. 하지만, propertywrapper를 사용하면 관리 코드를 포함한 propertywrapper를 정의해 두고, 여러 프로퍼티에 해당 propertywrapper를 적용하여 관리 코드를 재사용할 수 있어요. # propertywrapper 정의 ..

Swift 2024.06.07

[WWDC21] Explore structured concurrency in Swift

안녕하세요. 이번엔 structured concurrency에 대해 공부해 볼게요. # Structured ProgrammingStructured Concurrency에 대해 알아보기에 앞서 Structured Programming이란 무엇일까요? Structured Programming이란 위에서 아래로 동작이 흘러가는 프로그래밍 방식을 의미합니다.  기존 비동기 코드는 Structured programming 하곤 거리가 멀었어요. 비동기 동작 결과가 completion handler로 전달되기 때문에 언제 데이터가 올지 모르며 error throw를 할 수 없고 동일한 비동기 동작을 수행하기 위한 반복문을 사용할 수 없었어요.  # async/await을 사용한 비동기 코드async/await을 사..

WWDC 2024.05.28

[Xcode] iOS 17에서 ipa 설치 안되는 이슈

안녕하세요. Xcode 15로 빌드한 ipa가 iOS 17 기기에서 설치가 안된다면 아래 해결방법을 시도해 보세요. ## 해결방법### 1) 신뢰하는 컴퓨터 초기화'아이폰 설정 > 개발자 > 신뢰하는 컴퓨터 지우기'를 눌러서 설정을 초기화한 후에 다시 해보세요. 이렇게 했는데도 안되면 아래 해결방법을 시도해 보세요. ### 2) .app 파일로 앱 설치(1) .ipa 파일의 확장자를 zip으로 변경(2) zip 파일 압축 해제(3) Payload 폴더 안에 있는 .app 파일을 디바이스에 설치 ## 참고 Error in installing enterprise bui… | Apple Developer ForumsI'm experiencing this too, even with the updated Beta..

TroubleShooting 2024.05.26

[Xcode] Framework not found 에러 해결방법

안녕하세요. 시뮬레이터 빌드 중 아래 에러가 발생했을 때의 원인과 해결 방법 공유드립니다.Framework not found Linker command failed with exit code 1 (use -v to see invocation) # 원인아마도 앱에서 사용 중인 외부 SDK 중 일부가 arm64 시뮬레이터를 지원하지 않을 가능성이 높습니다. 외부 SDK가 아래 항목 중 하나라도 해당되는 것이 있는지 확인해 보세요.(1) 바이너리 형태로 의존성을 설정했으며 xcframework가 아닌 경우 (.framework, .a 등)(2) xcframework 형태이고 ios-arm_x86_64-simulator 아키텍처가 없는 경우(3) CocoaPods으로 의존성을 설정했으며 podspec에 아래..

TroubleShooting 2024.05.24

iPhone/iPad 앱을 Apple Silicon에서 실행시켰을 때의 os 정보

안녕하세요. Apple Silicon이 탑재된 Mac에선 iPhone이나 iPad 앱을 Mac에서 실행시킬 수 있게 되었습니다. 문뜩.. Mac에서 iPhone/iPad 앱을 실행시켰을 때, 그 앱의 os는 무엇이며 버전은 무엇일까 궁금해졌어요.. 아무리 찾아봐도 공식 가이드는 없.....ㅠㅠ 그래서 제가 직접 실행시키면서 찾아봤습니다ㅎㅎ # os nameiPhone 앱이든 iPad 앱이든 모두 iPadOS 라고 나옵니다. # os 버전현재 사용 중인 macOS 버전이 배포된 날 기준으로 가장 최신 iOS 버전으로 설정되지 않을까 싶어요. 예를 들어, macOS 14.4인 경우 2024.03.07. 에 배포되었으니 iOS 17.4가 되는 것이죠.  또 다른 예시로, macOS 13.6인 경우 2023.0..

기타 2024.05.23

Apple Silicon Mac에서 NSClassFromString나 respondsToSelector가 정상동작 안할 때

안녕하세요. 최근에 Intel 맥에서 M3 맥으로 교체했습니다. 근데 갑자기 NSClassFromString이랑 respondsToSelector가 동작을 안하더라구요...(자꾸 nil을 뱉거나 크래시 남...;;)  이럴 땐 프로젝트나 프레임워크의 Build Settings에서 'Build Active Architecture Only'를 NO로 바꿔보세요. 이번 글은 빠르게 마무으리.

TroubleShooting 2024.05.23

Facebook 로그인이 '제한적 로그인' 모드인지 확인하는 방법

안녕하세요. Facebook iOS SDK에 '제한적 로그인' 모드라는 것이 새로 생겼습니다. Facebook iOS SDK 제한적 로그인Facebook iOS SDK 17.0.0부터 Facebook 로그인 방식이 변경되었습니다. 앱이 사용자의 활동 추적을 요청했을 때 사용자가 거부했을 경우, Facebook iOS SDK를 통해서 로그인을 할 때 OpenID Connect 표준을 기반으phillip5094.tistory.com몇 가지 테스트해봤는데, 단순히 추적 허용 동의/거부만으로 '제한적 로그인'이 되는 것이 아닌 것 같습니다. 단편적인 예로 iOS 16 기기에서 추적 허용을 거부했음에도 '제한적 로그인'이 아닌 일반 로그인으로 되더라구요.  Facebook 공식 가이드에는 없지만.. '제한적 로그..

기타 2024.05.23