iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제66호 2022년 10월 23일
iPad와 macOS 이벤트 없이 새로운 아이패드 라인이 출시됐습니다. 며칠 지나면 macOS Ventura 정식 업데이트가 있겠네요. Xcode 14와 Swift 5.7 로 넘어가는 경험담이 차츰 늘어나는 것 같습니다. 오늘도 늦가을 단풍처럼 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
다음달 11월 30일에 레츠스위프트 오프라인에서 만날 준비되셨나요? 👋 
올해 컨셉은 누구나 참여하고 누구나 기여할 수 있는 Swift Playgrounds 입니다.
발표자는 자신의 경험을 깔끔하게 정리해서 공유해야 한다는 고정 관념을 버리고
발표해보고 싶은 주제가 있으면 누구나 스피커로 자원할 수 있습니다. 그런 스피커와 함께 경험을 공유하거나 발표를 준비할 수 있는 서포터도 자원할 수 있습니다. 세션, 워크숍, 티타임 발표 형식도 고를 수 있습니다. 

주니어 스피커도 환영하고, 주니어 서포터도 환영합니다
시니어 스피커도 환영하고, 시니어 서포터도 환영합니다
모집 마감이 이틀 남았네요. 함께 도전해보고, 함께 경험해보고, 함께 기여하는 커뮤니티 문화를 함께 해주실 분들을 찾고 있습니다 👉 스피커 or 서포터 지원하기 https://forms.gle/Xyd2eoUXYhjjSudD8
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 새로운 아이패드 출시와 함께 iPadOS 16.1 가 나오면서 새 버전에 맞춰 앱을 출시할 수 있습니다 App Store에 iOS 16.1 및 iPadOS 16.1 앱 제출하기 - 최신 뉴스 - Apple Developer

# 하드웨어

> 아이패드 라인도 엄청 촘촘해졌습니다. 10세대 아이패드는 USB-C로 바뀌었지만 애플 펜슬 1세대만 지원해서 이상한 상태이긴 합니다 The iPad 10th-generation 2022. Why Would Apple Think This is Okay? | by Youssef Mohamed

# 일반

> 💎 큰 PR을 보내면 리뷰가 안된다는 얘기를 많이 하죠. 반대로 무조건 작은 크기로 PR보내는 것도 좋지 않다는 취지의 글이네요 Don’t Do Small Pull Requests | by Elli Engineering

> 💎 조직마다 다르지만 iOS 개발자가 하게되는 6가지 역할에 대한 설명입니다 Do You Know the Six Different Roles of an iOS Developer? | by Pedro Alvarez

> 젯브레인에서 온라인 협업이 가능한 Fleet 코드 편집기를 발표했습니다. VSCode와 비교하는 글이네요 JetBrains Fleet vs. VS Code by Selim Enes

> 이제 SwiftLint를 SPM build tool plugin으로 활용할 수 있다고 하네요 👏🏼 Make SwiftLint available as a build tool plugin by technocidal · Pull Request #4176 · realm/SwiftLint

> 지난 10월 5일은 스티브 잡스의 기일이었죠. 잡스와 다른 삶을 살았던 장-루이 가세 컬럼에서 그가 남긴 유산에 대해 글을 남겼습니다. Remembering Steve Jobs. by Jean-Louis Gassée | by Jean-Louis Gassée


# 스위프트

> 🇰🇷 당근마켓 개발팀에서 우버 Needle 프레임워크로 의존성 주입하는 방식에 대해 소개합니다 iOS) Needle 로 의존성 주입하기 | by Kanghoon

> 💎 API보다 상위 수준에서 함수 기준을 나눌 수 있는 SPI 개념에 대해 소개합니다. System Programming Interfaces (SPI) in Swift Explained

> 💎 TCA 구조 개선을 하면서 프로토콜을 발표했습니다 Announcing the Reducer Protocol

> async-await 정리가 가장 깔끔한 것 같습니다 Async-await in swift. New Concurrency programming in Swift | Medium

> 나만의 고차 함수를 활용해서 좀 더 추상화를 잘하는 방법을 소개합니다 Creating Custom Higher-Order Functions Can Help You Write More Abstract Swift Code | by Maksym Teslia

> Grid 라는 2차원 배열을 다룰 때도 some Collection 형태로 배열 하나를 추상화하는 방식을 제안합니다 Khanlou | Which Collection

> async/await 기능을 사용할 때도 클로저 참조에 대한 메모리 관리가 필요하죠 Memory management for async/await and tasks in Swift

> POP와 DI는 다르다. 에서 시작해서 프로토콜이 아니더라도 의존성 주입을 할 수 있다는 설명을 좀 길게 설명합니다 Non-functional dependency injection in Swift | by Jim Lai

# 설계 구조 : 패턴

> 개인적으로 디자인 패턴중에서 가장 핵심적인 패턴이라고 생각하는 전략 패턴에 대한 설명입니다 Strategy Pattern and Swift | by No name

> 국내에서도 그렇고 Tuist로 앱을 모듈화하는 시도가 가장 트렌디한 것 같습니다 iOS App As a Microservice. Modularize Your App With Tuist | by Alex Dremov

> Using The Proxy Pattern In Swift 5


# 뷰 프로그래밍 : SwiftUI

> 💎 새로운 기능이 생기면 간단해지고 추상화되면서 이렇게 원인을 파악하기 어려운 경우가 생기는 것 같습니다. 이제 View.task로 분리하면 어떤 일이 생기는지 살펴봐야 합니다 Where View.task gets its main-actor isolation from – Ole Begemann

> 💎 Layout 프로토콜에 대한 설명과 예제 코드입니다 The Layout Protocol in iOS 16 | by Mark Lucking

> 계층적인 MV 패턴으로 SwiftUI 구조에 대해 설명합니다. 맞다/틀리다 문제라기 보다 그 앱에 적절한 구조가 좋은 선택이 아닐까 싶네요 SwiftUI Architecture — A Complete Guide to the MV Pattern Approach | by Mohammad Azam

> 태그 리스트 뷰를 만드는 과정이네요 Tags List View in SwiftUI (Chips View) | by M.Abbas

> 거대한 SwiftUI View를 리팩터링하기 위한 3가지 방법을 제안합니다 Three Ways to Refactor Massive SwiftUI Views - Holy Swift

> SwiftUI로 구현한 예제 앱들을 모아놓은 곳인데 무료는 아니고 $129 정도에 소스를 판매하는 곳입니다 Top SwiftUI App Templates — Xcode Source Codes | by Apps

> 스위프트 차트로 Matthew 효과를 구현한 예제 Visualise the Matthew Effect with Swift Charts | Software Development Notes

> Embracing Core Data in SwiftUI | by Mohammad Azam

> Fixing SwiftUI navigation with UIKit | by Jimmy Sanghani

> Mastering NavigationStack in SwiftUI. NavigationPath. | Swift with Majid

> Neumorphic Button in iOS 16 and SwiftUI | by DevTechie

> Tutorial: Integrate ARKit Image Recognition With SwiftUI | Medium

# 뷰 프로그래밍 : UIKit
# 프레임워크
다양한 프레임워크를 다루는 예제를 소개하는 글들입니다. 

> 💎 async 방식으로 OAuth 2.0 인증 매니저를 구현한 예제입니다 Generic Swift OAuth 2.0 in Async Way | by mein

> iOS 샌드박스 Bundle 컨테이너와 Data 컨테이너 디렉터리에 대한 설명입니다 Developer guide on the iOS file system

> FaceID나 TouchID로 인증하도록 구현하는 예제네요 How To Implement FaceID or TouchID in iOS | by Ege Sucu

> 다이나믹 아일랜드로 축구 경기 라이브로 표시하는 과정을 설명합니다. 실제로 써보니 애플 앱 이외에는 아직 부족해서 다양한 사례가 많이 나와야할 것 같더군요 Live activities are about to be Live | by Quentin Fasquel

# 개발 환경

> 💎 SPM에서 깃 서브모듈을 지원하는 방법에 대해 설명합니다 Swift Package Manager supports Git Submodules

> 💎 깃헙 액션으로 DocC 배포하기 Deploying DocC with GitHub Actions | by Max Cobb

> 💎 Codeface라는 폴더/소스/타입 관계를 보여주는 무료 도구입니다. 제가 만들고 있는 도구보다 다이나믹한 그래프가 장점이네요! See the Architecture of any Codeface

> Xcode에서 교체 가능한 대체용 앱 아이콘을 지정하는 방법입니다 Alternate App Icon Configuration in Xcode - SwiftLee

> Xcode 14에서 사용하는 단일 크기 앱 아이콘 사용하는 방법입니다 Xcode 14 Single Size App Icon

> Xcode 14에서 macOS용 Swift Concurrency 코드 중에 withUnsafeContinuation()가 오류가 있다는 리포트입니다. 아직 패치가 안되고 있다네요 ㅜㅜ Xcode 14.0 generates wrong concurrency code for macOS targets – Ole Begemann

> SPM에서 manifet 파일을 좀 더 사람에게 읽기 쉽게 표현하는 팁을 소개합니다. Pakage.swift 파일이 스위프트 코드라는 것을 잊고 있었네요 😅 make your Swift package manifest more readable - @_sa_s

> XCFramework + SwiftPackageManager | by Emrah

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