iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제62호 2022년 8월 28일
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.
지난주까지 폭우와 폭염이 다투는 한여름이었는데, 갑자기 가을이 된 것은 애플 가을 이벤트가 얼마남지 않은 이유겠죠? 9월 7일 애플 이벤트 초대장이 공개됐습니다. 새로운 아이폰 14 기대하고 계신가요?
아이폰 말고도 아이패드나 맥, 에어팟까지 새 제품이 나올 타이밍이라 다들 기대치가 높은 것 같습니다
레츠스위프트 2022 준비위원회도 첫 모임을 가지고 앞으로 어떤 행사를 준비할 지 인사를 나눴습니다. 저는 자문 역할로 다음 행사로 계속 이어질 수 있는 인수인계 방식을 전달하고 있습니다. 어떤식으로든 올해는 행사에서 만날 수 있을 것 같습니다. 

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

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플
> 어머 이런 적은 처음이야! 열심히 번역해주신 분들께 감사합니다 WWDC22 한국어 비디오 자막 사용 가능 - 최신 뉴스 - Apple Developer
# 하드웨어

> 💎 iOS16에서 UIViewController가 달라진 점을 상세하게 정리해준 글입니다. 특히 iPadOS에서는 Stage Manager 때문에 Window, Sheet, NavigationBar, SpiritView 크기 등이 소소하게 달라졌네요 View Controller Presentation Changes in iOS and iPadOS 16 | by Geoff Hackworth

> 오랜만에 장 루이 가세 글입니다. 쉽지 않은 애플카에 대한 도전을 이야기하고 있습니다. Apple Car: Software and Money. by Jean-Louis Gassée | by Jean-Louis Gassée

> 기술적인 분석은 아니고 M1과 M2를 가볍게 비교해주는 글입니다 Apple M1 vs. M2 — Comparison | by Jakub Jirak

> 애플 제품 이외에 아이패드용 악세서리를 가볍게 추천해줍니다 The Best (Non-Apple) iPad Accessories for the Everyday User | by Adi Kakarla


# 일반

> 크롬과 사파리가 경쟁하면서 긍정적인 영향을 주고 있다는 글입니다. 사파리가 웹 개발자들에게는 여전히 이단아입니다만 표준 지원도 차츰 나아지고 있는 것 같습니다 Chrome and Safari have great competition, meet the new and futuristic browser | by Abraham Hernandez

> 애플 PassKey처럼 FIDO를 지원하는 경우가 많아지면 패스워드를 더이상 사용하지 않아도 되는걸까요! Passwords Are Dead — This Is Newly Replacing It! | by Nikhil Vemu

> 페이스북이 인앱 브라우저에 JS코드를 넣어서 모든 것을 추적하고 있다는 소식이 전해지면서, InAppBrowser.com 사이트를 만들어서 어떤 것이 주입되어 있는지 확인할 수 있습니다. See what JavaScript commands get injected through an in-app browser · Felix Krause


# 스위프트

> 🇰🇷 스위프트 차트를 이용해서 라이브 코딩하면서 정렬 알고리즘을 설명하는 영상입니다 Animations of sorting algorithms in Swift Charts - YouTube

> 💎 스위프트에서는 적용되지 않았지만, 하스켈로 대표되는 함수형 언어에서 사용하는 렌즈와 프리즘에 대한 소개입니다. Struct를 통해 구현하고 있지만, 프로토콜을 활용하는 방법도 고려해보면 좋겠습니다 Lenses and prisms in Swift - The.Swift.Dev.

> 💎 What is a RunLoop Anyway? Swift and iOS Guide | by Steven Curtis

> 열거형 연관값을 UserDefault에 저장하는 방법입니다 How to save enum with associated value in UserDefaults using Swift | Sarunw

> 스위프트로 스위프트 컴파일러를 구현하는 작업을 위해서 일부 콤포넌트부터 구현을 시작했다고 하죠. 그 과정에서 필수적인 요구사항을 정리한 글이 포럼에 올라왔습니다 Implementing Parts of the Swift Compiler in Swift - Development / Compiler - Swift Forums

> 구글에서 스위프트 for 텐서플로 팀이 해체되면서 창업한 PassiveLogic 에서 스위프트로 수학 모델을 구현하던 과정을 설명한 시리즈 글입니다. Recent Advances in Differentiable Swift | by Brad Larson

> Swift 5.7부터 자기 자신 타입을 표현하는 제약이 줄어들어서 조금더 유연해집니다 Swift 5.7 removed limitation of type constrained extensions

> 아직 구현되지 않고 현재 리뷰중인 내용입니다만, deinit 시점에 데이터 레이싱 문제를 해결할 수 있도록 분리 처리하는 방법을 제안했네요. deinit 시점에 분리되서 동기/비동기 메모리 처리를 할 수 있는 명령어가 생긴다고 생각하시면 될 것 같습니다 swift-evolution/0371-isolated-synchronous-deinit.md at main · apple/swift-evolution

async/await in Swift. All the features you need to know about | by Tim Dolenko

Actors and Data Races in Swift - Part 5 | by Tim Dolenko


# 뷰 프로그래밍 : SwiftUI

> 💎 아직 SwiftUI가 시기상조인 5가지 이유. 저도 아직 제약사항이 있다는 부분에서 충분히 공감합니다 5 reasons I still feel SwiftUI is premature | by Enebin

> 💎 ViewBuilder 프로퍼티 래퍼를 사용하는 예시를 상세하게 설명해주고 있습니다 @ViewBuilder usage explained with code examples - SwiftLee

> 거대한 뷰컨트롤러를 만들던 것처럼 SwiftUI에서 거대한 ViewModel을 만들게 되는 현상에 대한 글입니다 Massive view controller a.k.a view model in SwiftUI | by Jim Lai

> SwiftUI AttributedString에 대한 특징과 제약사항을 설명해주는 글입니다. SwiftUI AttributedString is not there yet | by Thomas Ricouard

> SwiftUI와 멀티피어 연결성 프레임워크를 사용해서 게임만드는 과정입니다 Using the Multipeer Connectivity Framework With SwiftUI 4 to Build a Game | by Joe Diragi

> SwiftUI로 그래프 시각화를 위해 그래프를 그리는 방법에 대한 쉬운 설명입니다. Building a Graph With SwiftUI | by M Salman A

Mastering grid layout in SwiftUI | Swift with Majid

Create Custom View Components in SwiftUI | by Ricardo Montemayor

How to validate field using Combine in SwiftUI | by DevTechie

# 뷰 프로그래밍 : UIKit
# AppKit

 macOS 내에서 애플이 개발할 때 사용한 프레임워크가 AppKit인지 Catalyst, SwiftUI 인지 분석한 글입니다. macOS Ventura에서는 SwiftUI 사용이 12%까지 늘어났네요! Apple’s use of AppKit, Mac Catalyst and SwiftUI in macOS

# 프레임워크
# 서버 사이드

> 스위프트 오픈소스 제안 내용 중에 서버 그룹에 올라온 GraphQL 관련입니다. Graphiti 라이브러리는 swift-nio 기반으로 어느정도 구현이 되어 있어 곧 사용해볼 수 있을꺼 같네요 sswg/0019-graphql.md at main · swift-server/sswg

# 개발 환경

> 🇰🇷 이제 단골손님이시군요. Xcode Test Plans를 생성하는 스크립트 만들기 관련입니다 민소네블로그 - Xcodeproj Gem을 활용하여 Xcode Test Plans 생성 스크립트 만들기

> 여러 앱 버전과 스페이지, A/B 테스트 조건까지 빌드 설정에 넣다보면 복잡해지죠. 그걸 다루기 위해서 xcconfig를 다루는 방식에 대한 설명입니다 Collect build data and run experiments using dynamic Xcode build settings | Medium

> DocC로 인터액티브 튜토리얼 문서를 작성할 때 과정을 설명해줍니다. DocC Interactive Tutorials — How to create an iOS framework Pt5 | by El Moez Amira

> 애플 플랫폼의 로그 시스템 Pulse가 2.0으로 업데이트됐군요! Pulse 2.0 | kean.blog

# 테스트

> StoreKit 구매를 테스트하는 과정을 설명합니다 Faster StoreKit testing by syncing in-app purchase products

> 나만의 Assertion 만들기 How to Make Custom Test Assertions in Swift | Quality Coding

> XCUITest로 UI테스트 하면서 필요한 화면을 기다리는 방법입니다 XCUITest: Add waitForNonExistence() to your iOS Automation Toolkit | by Andronick Martusheff


# 도구/오픈소스 

> Soulver 라는 앱의 핵심 라이브러리 중에서 계산식 문자열을 파싱하는 도구를 오픈소스로 공개했습니다. 개인은 무료 라이센스지만, 유료는 비용이 발생하는 조건입니다 String Parsing with Soulver Core | GitHub

> SQLite3를 사용하기 위한 라이브러리와 도구 The Lighter Swift Codegen for SQLite3 – Helge Heß – Software engineer.


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