iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제15호 2020년 9월 13일

 님을 위한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 일요일 뉴스레터와 함께해요 👨‍👧‍👦
다들 건강하게 잘 지내시나요? 요즘처럼 안녕을 물어보는 것이 당연한 시기가 또 있었을까 싶네요. 다음주에 드디어 애플 이벤트가 있다고 합니다. 아이폰12를 기다리고 있는데 언제 나올지 궁금하네요. iOS14와 iPadOS, macOS, watchOS 등 일곱 번째 베타까지  나왔습니다. 그동안 소식들을 합쳐서 전해드립니다. 
앞으로는 매월 둘째, 넷째주 일요일에 뉴스레터를 발행할 예정입니다. 

누구나 함께하는 뉴스레터 저장소 👉
메일링 리스트 가입은 가입하기 링크 주변에 소개해주세요 🤩
⌘ 애플 소식

9월 15일에 애플 이벤트가 확정되었습니다. 과연 어떤 제품을 공개할까요? 루머에 의하면 아이폰12가 아니라 새로운 워치와 아이패드가 아닐까 추측하고 있습니다. 하지만 2시간이나 되기 때문에 글래스 같은 새로운 디바이스가 나오는 게 아니냐고 기대하고 있습니다. 
Hero 이미지를 맥에서 누를 수 없지만, iOS 디바이스에서는 이미지를 터치하면 AR 모드로 바뀝니다. 참고로 이미지 파일은 .usdz 파일로 Universal Scene Description 에셋입니다. 기존에 증강현실 샘플들은 USD 갤러리에서 같이 한 번 살펴보세요. 
지나가는 소식으로 국내 이동통신 3사가 애플에 대해 공정위에 낸 거래상지위남용 관련 동의의결안을 마련했다는 뉴스가 있었습니다. 소비자 후생제고와 중소사업자 상생을 지원하기 위한 펀드가 마련된다고 합니다. 어떤식으로 쓰여질지 궁금하네요. 
🇰🇷 국내 소식들
민소네님 회사 프로젝트가 워낙 거대해서(?) 모듈화에 관심이 많으신가 봅니다. 블로그에 계속해서 패키지 생성과 모듈을 분리해서 빌드하고 자동화하는 과정을 정리해주고 계시네요. 이번에는 rpath와 관련해서 링크할 특정한 다이나믹 프레임워크 경로를 변경하는 방법을 정리해주셨습니다. 

Xcode 12와 Swift 5.3부턴 SPM 패키지 내부에 리소스를 담는게 가능해졌습니다. SwiftUI로 만든 뷰 코드도 추가해서 패키지로 만들수 있는거죠. 특히 Xcode 12부터는 SwiftUI로 멀티 플랫폼 앱으로 만들 수 있도록 확장하고 있습니다. 패키지를 만들면서 생기는 문제들을 해결하는 방법을 소개해주셨습니다.
✈️ 해외 소식들
이번 호부터는 해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 뷰프로그래밍 : 세이프 영역
세이프 영역까지 꽉채우고, 회전해도 제대로 보이는 커스텀 뷰를 만드는 과정을 설명합니다.

# 뷰프로그래밍 : 응답 체인
응답 체인을 따라서 이벤트 처리를 하는 방법을 소개합니다. 응답 체인으로 이벤트가 전달되는 과정을 본 적이 없다면 읽어보시길 권해드립니다.
# 테스트 : 인스트루먼츠
ARC를 사용하면 어느 시점에 메모리가 해제되는 지 명확하게 유추하기 어렵거나, 일정 시간동안 객체가 사라지지 않는 것을 찾기가 쉽지 않습니다. 인스트루먼츠를 활용해서 메모리 누수를 찾는 방법을 정리해줬네요.

# 테스트 : 단위 테스트
단위 테스트를 어디부서 시작해야 하는지 기본적인 내용을 소개하고 있습니다.
단위 테스트를 하려면 가짜로 동작하는 테스트 더블 객체들이 필요하죠. Stub과 Mock 객체를 활용해서 단위 테스트하는 방법을 알려줍니다.
# 설계 구조 : 의존성
여전히 의존성 관련 내용은 매주 새로운 글이 나오는 것 같네요.

# 설계 구조 : 패턴
스위프트 UI가 반응형 RVVM 구조와 어떻게 비슷하고 다른지 비교하는 글입니다. 콤바인과 RxSwift를 비교했던 것처럼 흥미로운 비교네요. 
그리고 최근에 상대적으로 MVVM 새로운 글이 줄어든 느낌인데, MVVM 구조로 로그인 화면 구현하기 소개하는 글이 나왔네요. 

# 설계 구조 : 모듈화
iOS 모듈이 무엇인지부터 모듈로 나눠서 패키지를 만들 때 선택지까지 설명하는 글입니다. iOS 모듈화 가이드
# 프레임워크 : 키체인
사용자 정보를 암호화해서 보관하기 위해서 키체인을 활용하는 방법을 소개합니다.

# 프레임워크 : AVFoundation
비디오 다운로드와 캐싱하기 

# 프레임워크 : SQLite
페이스북 메신저 앱을 SQLite로 성능 개선한 사례가 있었죠. 프로젝트 라이트스피드라고 부른 이 프로젝트에서 영감을 받아서 SQLite에 화면 단위로 나누는 실험을 해본 내용입니다. 코드양도 줄어들고 역할 분담이 잘되는 것 같은가요? 궁금하면 읽어보세요 :) 
# 프레임워크 : 콤바인
베터프로그래밍에 올라온 콤바인 관련 내용들입니다. 점점 자료가 많아지니까 네트워크 요청 다루는 방법으로 사례가 많아질 것 같습니다.
콤바인으로 여러 조회 API 호출하기

# 프레임워크 : 애플로그인
다행히 아직까지는 강력하게 강제하지 않고 있지는 않지만 이제 필수가 될 것 같네요.

# 프레임워크 : GCD
다음 두 가지 내용은 DispatchQueue를 이외에 활용하기 좋은 예제가 될 겁니다.
# 프레임워크 : SwiftUI
또 다른 예제는 아답터 패턴을 SwiftUI로 구현하기입니다. 다양한 사례가 많아지고 있네요.

# 개발환경 : 도구
# 개발환경 : 빌드
앱 하나를 만들더라도 프로젝트에 다양한 빌드 설정이 필요하죠. 그럴 때 도움될 내용입니다.

# 개발환경 : 도구
📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe