iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제56호 2022년 5월 22일
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다 🙌
이제 한국에서도 맥 스튜디오 받으신 분들이 꽤 계시네요. 아직 애플 스토어에도 없어서 구경을 못해봤습니다.  iOS 15.4와 macOS 12.4가 업데이트됐고 유니버설 컨트롤도 정식 서비스가 되었습니다. 혹시 이번에 iOS와 macOS, Xcode 업데이트하며서 조금 빨라진 것을 느끼셨나요? 국내에서 접근하는 앱 스토어나 업데이트 관련 CDN 다운로드 속도가 개선됐다고 합니다. 

매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 🇰🇷 구독 관련 가격 인상, 취소나 안내를 위한 업데이트가 있습니다 구독 알림 관련 업데이트 - 최신 뉴스 - Apple Developer

> 🇰🇷 지난 5월 17일 세계 접근성 인식의 날을 맞아서 애플에서 새로운 접근성 기능을 소개했습니다. 문을 인식해서 거리를 알려주거나 붙어있는 문구를 읽어주기도 하네요. 하드웨어, 소프트웨어 및 머신 러닝의 강점을 결합한 혁신적인 손쉬운 사용 기능 미리 공개- Apple


# 하드웨어

> 하드웨어와 관련된 새 기능이 포함된 몬테레이 12.4 업그레이드가 있었습니다 MacOS Monterey 12.4 is Out! — What’s New? | by Nikhil Vemu

> 애플이 삼성에 독점 납품하는 OLED 부품을 다변화하기 위해서 LG에 투자한다는 소식이 있었죠. 그와 관련된 글입니다. Why Apple invested 3 billion in LG | by Youssef Mohamed


# 일반

> 💎 개인적으로 중학생 때 NeXT Cube를 사는게 꿈이었던 적이 있습니다. 당시에도 비쌌지만 지금은 더 비싸서 아쉽게도 아직도 못 구했네요. 오랜만에 스티브 잡스가 돌아오기 전의 넥스트 컴퓨터 이야기를 정리한 글입니다 Next Computers | by Youssef Mohamed

> 💎 넥스트 글도 있는데, 80년대 PC용 운영체제를 정리한 글이 있어서 공유합니다. 스샷만 봐도 추억이 돋는군요 What did the old operating systems look like? | by Kesk -

> iMessage로 항공편을 입력했더니 상태를 보여주는 숨겨진 비행기 추적 기능을 발견(?)했다는 내용입니다. 몇 개 입력했는데 미국 국내선은 잘 되는 것 같고, 국제선도 대한항공은 되는데 아시아나는 안되네요 ㅎㅎ Apple’s (Hidden) Flight Tracker App | by Nikhil Vemu

> Git 서브모듈을 활용해서 프로젝트 아래 하위 프로젝트를 관리하는 방법입니다 Git Submodules | by Mohammad-Ali A


# 스위프트

> 💎 레거시 비동기 코드를 async/await으로 변경하는 과정을 설명해주고 있습니다 Async Await — Refactor Your Old Swift Code | by Alessandro Manilii

> 💎 메인액터의 동작 방식을 이해하기 위해서, 어떤 식으로 구현되어 있는지 만들어 가면서 보여줍니다 How @MainActor works – Ole Begemann

> 💎 async await로 된 단위 테스트 코드를 작성했지만 의도한 대로 테스트가 안된다는 질문이 포럼에 올라왔습니다. 질문자가 포인트프리 stephencelis인데, 이 분이 혼란스러울 정도면 어째야 할까요 ㅎㅎ Reliably testing code that adopts Swift Concurrency? - Using Swift - Swift Forums

> 💎 throws로 에러를 던지기 말고 다른 방법을 없을까 고민해보게 만드는 글입니다 Why I don’t like Swift’s “throws” | by Caio Sym


> 이제 Swift 6로 가는 길이 시작됐습니다. 5.x에서 개선되거나 추가된 기능들이 호환성도 좋아지고 성능도 개선될 것으로 보입니다. Piecemeal adoption of Swift 6 improvements in Swift 5.x - Evolution / Pitches - Swift Forums

> 액터에 대한 간단한 소개글입니다 Actors in Swift: Part 1 — Actors | by Paul O

> Modern Concurrency에 대해 파트1부터 파트3까지 3개로 나눠서 설명합니다. 좀 길지만 읽어볼 만 합니다 Swift New Concurrency Framework (Part 1) | by Ali Akhtar | 파트2 | 파트3

> 요즘은 GCD와 async/await만 이야기하는 글이 많은데, 더 낮은 수준에서 살펴보는 글이라 소개합니다 Using Threads in Swift | Alex Dremov


# 설계 구조 : 패턴

> 💎 제목은 클린 아키텍처라고 써있지만, VIP 와 VIPER 형태로 나눠서 구현한 예제를 설명하고 있습니다 Clean Architecture in iOS | by Ahmed Iqbal

> 이 글도 클린 아키텍처가 제목이지만 내용은 3단계 계층형 구조로 묶어서 표현하고 있습니다. 다른 글과 어떻게 다른지 살펴보시면 좋을 것 같습니다 Clean Architecture: iOS App | by Paul Allies

> 파사드 패턴으로 여러 의존성을 한꺼번에 주입하는 방법을 소개합니다 iOS: Simplifying Dependency Injection with the Facade Design Pattern | by Pedro Alvarez


# 뷰 프로그래밍 : SwiftUI

> 💎 SwiftUI 색상을 인코딩하고 디코딩하는 여러 상황들을 소개해주고 있습니다 Encode and Decode SwiftUI Color

> 💎 EnvironmentObject와 비슷하지만, 객체가 아니라 값을 다루는 Environment Value라는 개념으로 값을 주입하는 방식을 설명합니다 Environment Values as an Alternative to Dependency Injection in SwiftUI | by Emilio Peláez

> 💎 미디엄 앱에서 SwiftUI를 어떻게 사용하고 있는지 좀 더 구체적인 사례를 보여줍니다 How do we use SwiftUI in the Medium iOS application | by Thomas Ricouard

> 💎 SwiftSoup 크롤링 프레임워크로 sundell 블로그 사이트를 간단한 앱으로 구현했네요 How to Read Website in SwiftUI | Ege Sucu Blog

> 💎 Starscream 웹 소켓 라이브러리를 사용해서 리얼 타임 데이터를 다루는 방법입니다 Pulling real time data with WebSocket and SwiftUI | by Tiffany L

> 💎 SwiftUI 관점에서 렌더 루프를 설명합니다. 글이 좀 많고 상세한 설명이라 읽기 쉬운 글은 아닙니다만 추천합니다 The SwiftUI render loop


> 값을 검증하기 위한 프로토콜과 프로퍼티 래퍼를 활용하는 방법을 제안합니다 A Data Validation Solution Utilizing Swift Property Wrappers and SwiftUI View Extensions | by Jonathan Storey

> 여러 애니메이션 방식을 정리했네요 Animations in SwiftUI with examples | by Jimmy Sanghani

> 프로퍼티 래퍼로 Codable한 값을 바로 UserDefaults에 저장하고 불러올 수 있도록 처리하는 방법입니다 Creating a property wrapper to persist Codable types | Daniel Saidi

> SwiftUI에서 Path를 다루는 방법들을 정리했네요 Exploring Path in SwiftUI | by DevTechie

> 시간을 표시할 때처럼 숫자가 일정한 간격으로 보여져야 한다면 고정폭 폰트를 쓰면 되겠죠. 그럴 때 사용하는 API에 대한 팁입니다 Monospace Digits

> (지난 뉴스레터에도 비슷한 글이 있었죠) iOS 14이후부터 가능한 SSL/인증서 Pinning 방식을 소개합니다 SSL/Certificate Pinning — iOS 14.0 Never easy before | by Santosh Botre

> SwiftUI로 개발할 때 트레이드오프에 대해 좀 더 솔직한 글이네요. SwiftUI Still Isn’t Production-Ready | by Steven Curtis

> 일주일동안 하루 하나씩 SwiftUI로 뭔가 만들어보는 커뮤니티 이벤트입니다. 디자인보고 빨리 만들기, 안되는 경우 요로조리 피해가기, 애니메이션, 맥용 앱, 접근성 주제별로 진행되고 무료라고 하네요 The SwiftUI Series


# 뷰 프로그래밍 : UIKit

> 💎 오브젝티브-C 런타임과 NSInvocation을 이용해서 private API를 호출하는 방법입니다. 스위프트가 나오기 전에 흔한(?) 방식이었지만 요즘은 보기 드문 것 같네요. 여전히 private API를 호출하면 리젝대상 중에 하나입니다 Calling Private APIs in iOS | Swiftjective-C


# 프레임워크

> 이더리움 블록체인 데이터에 접근하기 위해 web3.swift 라는 프레임워크를 사용하는 방법이네요. 네이티브로 dApp을 구현한다면 어떤 API를 사용할 수 있는지 궁금하다면 읽어보세요 How to Fetch Data From the Ethereum Blockchain Using Swift | by Lee Kah Seng

> 이미지 처리를 위한 기초적인 용어와 개념, 타입들을 소개합니다 Image properties and efficient processing in iOS, part 1 | Medium

> 반응성이 좋고 화면 요소가 버터처럼 스무스하게 표시되도록 최적화한 과정을 설명합니다 Making Swiggy Buttery Smooth | by Agam Mahajan

> SwiftWasm으로 브라우저에서 동작하는 게임 만든 경험을 소개해줍니다 Running games in the browser with SwiftWasm | Pyrus.io

> URLResponse 캐시 때문에 서버 응답을 받을 수 없을 때 몇 가지 해결 방법을 제시합니다 URLResponse cache can exist regardless of cachePolicy! | by Thongchai Kolyutsakul


# 개발 환경

> 💎 앱 성능 개선을 위한 여러 팁을 소개합니다. 이 글은 파트2로 뷰 관점에서 이야기가 많네요 Improve Performance in your iOS Applications — Part 2 | by Sneh Pandya

> 코코아팟으로 배포가능한 모듈 생성하기를 정리했네요. Create Modules using CocoaPods | Level Up Coding

> Vapor 개발자 중에 한 명인 Tim Condon이 VSCode에서 서버 작업을 하면서 스위프트 패키지를 다루는 몇 가지 상황을 공유해줬습니다. Xcode가 아닌 개발 환경이 좀 더 다양해지면 좋겠습니다 Editing Swift Packages in Visual Studio Code | Tim Condon

> iOS 개발 과정에서 생산성을 높이기 위해서 단축키, 코드 조각, 템플릿을 적극 활용해보라는 글입니다 How to Boost your iOS App development process | by Giorgi Sandroshvili

> 인스트루먼츠로 앱 성능 측정을 위해서 OSLog 통합 로기 시스템을 활용하는 방법을 설명합니다 Measuring app performance in Swift | Swift with Majid

That pesky Xcode 13.2+ build error after pod install | by Þorvaldur Rúnarsson

10 Tips and Tricks for Swift Developers | by Rashad Shirizada


# 테스트

> 💎 단위 테스트에서 오토릴리스풀을 써서 메모리 누수 방지하기 Memory leaks prevention using an autoreleasepool in unit tests - SwiftLee

> 단위 테스트 작업은 업무 속도를 느리게 만든다. 그렇지만 정말 느리게 만드는 게 무언인가 생각해보게 되는 글입니다 Unit Tests Slow Me Down. It only makes sense | by Gregory Leman


# 도구/오픈소스 

> 나선형태로 뷰를 표시하도록 도와주는 오픈소스 buh/Spiral

> 문법 하일라이트를 지원하는 코드 에디터를 만들 수 있도록 도와주는 오픈소스 simonbs/Runestone


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