클래스나 구조체가 필요로 하는 외부 객체(의존성)를 직접 생성하지 않고 외부에서 전달받는 방식을 말합니다.
쉽게 말해서, 내가 필요한 것을 직접 만들지 않고 누군가에게 받아서 사용한다는 개념입니다.
간단한 예시로 커피 주문 시스템을 통해 알아보겠습니다.
의존성 주입이 없다면 다음과 같이 코드를 작성하게 됩니다.
이렇게 작성하면 CafeCounter와 Americano가 강하게 결합되어 다른 음료로 변경하기 어렵고 테스트하기도 어려워집니다.
Override는 클래스의 메서드, 프로퍼티 또는 서브스크립트를 하위 클래스에서 재정의하는 개념입니다. Override는 주로 상속받은 기능을 커스터마이징하거나 확장할 때 사용되며 다형성(polymorphism)을 구현하는 중요한 수단 중 하나입니다. 메서드나 프로퍼티를 재정의할 때는 override 키워드를 사용하여 명시적으로 나타내야 합니다.
싱글톤 패턴은 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다. 이 패턴은 주로 전역 상태를 관리하거나 자원의 중복을 방지하고 싶을 때 사용됩니다. 예를 들어 네트워크 매니저, 데이터베이스 연결 객체 등은 애플리케이션 전체에서 하나의 인스턴스로만 존재해야 합니다. 여러 인스턴스가 생성된다면 리소스를 낭비하거나, 데이터를 일관성 있게 유지하는 것이 어려울 수 있습니다.
운영 체제가 프로세스 내에서 실행되는 가장 작은 단위입니다. 모든 프로그램은 최소 하나의 스레드를 가지고 있으며 이를 메인 스레드라고 부릅니다. 스레드는 프로세스 내에서 동시에 여러 작업을 처리할 수 있으며 프로세스가 자원을 여러 스레드 간에 공유하면서 작업을 수행합니다.
프로레스를 ‘회사’라고 생각하면 스레드는 ‘직원’이라고 볼 수 있습니다. 회사는 여러 직원이 각기 다른 작업을 병렬로 수행하게 하여 더 많은 일을 할 수 있습니다. 마찬가지로 프로세스도 여러 스레드를 생성해 다양한 작업을 동시에 처리할 수 있습니다.
한국 블로그에는 해당 내용에 대한 자세한 정보를 찾기 어려워서 결국 해외 커뮤니티(레딧, 애플 개발자 공식 커뮤니티, 애플 공식 문서, 깃허브 등등)를 많이 참고했다. 솔직히 영어 실력이 부족해 모든 자료를 하나하나 번역하면서 해석하는 것이 꽤 힘들었다(+ 번역 프로그램이 있지만 결국에는 영어와 함께 봐야 한다. PrivacyInfo 추가될 속성들도 한글로 번역되기 때문). 하지만 이런 과정을 반복하다 보면 결국 영어와 기술 문서 해석이 지금보다 훨씬 수월해질 것이라고 믿는다. 확실히 코딩뿐만 아니라 영어 실력도 중요하다는 것을 이번 경험을 통해 다시 한 번 깨달았다.
문제를 해결하긴 했지만 솔직히 제대로 했는지에 대한 확신은 아직 없다. 그래도 여러 문서를 탐구하고 분석하는 과정은 굉장히 재미있었고 새로운 지식을 배우면서 한 단계 성장한 느낌이 들었다. 문제를 해결했을 땐 내가 정말 개발자가 된 것 같았고 뿌듯했다.
앞으로도 더 많은 에러를 만나고 싶다. 내가 아직 모르는 에러들이 많다는 점이 오히려 다행이라고 생각한다. 왜냐하면 앞으로 풀 문제가 아직 많이 남아있고 성장하는 즐거움을 그만큼 더 많이 느낄 수 있기 때문이다. 지금처럼 초심 잃지 말고 꾸준히, 그리고 열심히 최선을 다해보자.
앱에 타사 SDK를 사용하는 경우 SDK가 앱에 포함하는 모든 코드에 대한 책임은 귀하에게 있으며 해당 코드의 데이터 수집 및 사용 관행을 알고 있어야 합니다. (생략) 이 기능은 모든 앱을 위한 한 단계 발전된 기능이며, 우리는 모든 SDK가 이 기능을 채택하여 해당 앱에 의존하는 앱을 더 잘 지원하도록 권장합니다.
이 정책은 WWDC23에 발표된 내용으로, 올해 봄(2024년)부터 타사 SDK가 앱 내에서 데이터를 어떻게 수집하고 사용하는지 명확하게 나타내기 위해 필수적으로 포함해야 한다. 근데 이 기능을 통해 어떻게 앱을 더 잘 지원하도록 권장할 수 있을까?
1. 사용자 신뢰도 향상
Privacy Manifest는 앱이 타사 SDK를 통해 사용자의 데이터를 어떻게 수집하고 사용하는지 투명하게 나타낼 수 있다. 개발자는 사용자에게 추가적으로 데이터 수집과 처리 과정을 제공할 수 있다. 이로 인해 사용자 신뢰도를 높이는 데 중요한 역할을 한다.
2. 타사 SDK 데이터 사용 이해도 증대
애플은 개발자가 타사 SDK가 어떻게 데이터를 수집하고 사용하는 방식을 더 잘 이해할 수 있도록 도와준다. 따라서 개발자가 앱 내에서 발생하는 모든 데이터 흐름에 대한 책임을 더욱 명확히 할 수 있게 된다.
3. 앱 데이터 흐름 간편 확인
Xcode15부터 앱의 Privacy Report를 생성할 수 있다. 이를 통해 개발자는 앱에 포함된 데이터 사용 정보를 한눈에 볼 수 있다. 생성 방법은 다음과 같다.