iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제70호 2022년 12월 27일
벌써 12월 마지막 주차 - 2022년 마지막 뉴스레터입니다. 2022년 어떻게 보내셨나요? 스위프트 생태계도 더 커지고 더 깊이가 더해졌습니다. 지난 3년동안 오프라인 행사가 거의 없었지만 슬슬 다시 사람들이 모이고 공유하기 시작해서 더 2023년이 기대됩니다. 크리스마스 연휴로 늦어진 iOS / Swift 관련 소식을 모은 뉴스레터를 시작합니다.

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

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플
> iPhone, iPad, Mac에서 Freeform이 출시됐습니다. iCloud로 모든 플랫폼에서 동기화가 됩니다
# 일반

> 💎 코드가 처음 만들어지는 시점부터 성장하고, 재사용하고, (소유권이 없지만) 합쳐지고, 자동화되서 다른 부서로 넘어가고 변화할 때까지 흐름을 설명합니다 The Importance of Code Ownership. Well-owned code is well-maintained code | by Elye

> 아쉽게도 Xcode 대안이었던 AppCode가 종료된다는 소식이네요 AppCode 2022.3 Release and End of Sales and Support | The AppCode Blog

> 워치 앱을 개발하기 시작할 때 참고하면 좋은 가이드 문서입니다 Apple Watch App Development Guide | by Poonam Soni

> 여전히 자바 백엔드 개발자가 세상을 지배한다고 믿는 분들이 많죠. 수요와 공급 측면에서만 봐야하는 것인지, 또 다른 시야는 무엇이 필요한지 생각해보는 글입니다. 물론 한국 시장과는 좀 다른 것 같네요 Java is Dead — 5 Misconceptions of developers that still think Java is relevant today! | by Sid Thomas

> 전에 소개한 적이 있는 C4 모델로 설계하는 과정을 보여줍니다 Using the C4 Model to Design Applications | by Ashley Peacock


# 스위프트

> 💎 배열 Copy on write를 실험적으로 보여주고, 직접 동작하도록 Struct를 만드는 예제입니다 What is copy on write? | by App Developer

> 💎 OS X을 만들면서 C로 만들어진 Core Foundation과 Objective-C로 포장했던 Foundation이 이제 Swift 기반 오픈소스로 완전히 대체된다고 하네요. 
더 이상 C 코드도 없이 스위프트로만 구현하고, 작은 패키지 단위로 쪼개서 배포됩니다. 이미 애플 플랫폼이 아니라 리눅스에서 Foundation을 사용하면 경험해보실 수 있습니다 Swift.org - The Future of Foundation

> 💎 Swift가 C++ 상호 호환성을 목표로 하고 개선 중입니다. 그와 관련해서 소수 찾기 코드를 비교해보는 글입니다 Getting Started With Swift — C++ Interoperability | by Konstantin Semianov

> 순환 의존성이 있는 경우에 의존성을 다루는 Factory에서 컨테이너를 구현한 방법을 설명합니다. Factory: Circular Dependency Chains | by Michael Long

> lazy 변수를 만드는 것처럼 클로저를 선언할 때도 lazy를 활용할 수 있다는 짧은 글입니다 Lazy Closures Using Swift. Delay that heavyweight work | by Steven Curtis

> OptionSet 프로토콜에 대한 설명입니다 OptionSet in Swift explained with code examples - SwiftLee

> 실험적으로 머지된 걸로 기억해서 @_dynamicReplacement를 써본 적이 없는데 잘 설명되어 있습니다 Tired Of Objc Method Swizzling? Check Out Swifty Alternative. | by Kiarash Vosough

> 이전에 소개했던 코드로 뷰를 만드는 자기만의 방식을 정리한 글의 연장선입니다. iOS View Code: A Solution To Keep the Encapsulation of the Pipeline | by Pedro Alvarez

> Quick Swift Tip: using CompactMap | by Alessandro Manilii

> Swift Enum With Labeled Associated Values

> Swift Stride Quick Guide

> What is the difference between Self vs self in Swift? | by App Developer


# 뷰 프로그래밍 : SwiftUI

> 💎 SwiftUI는 안되지만 UIKit으로 할 수 있는 것들을 짧게 정리한 글입니다 SwiftUI Is Not Yet Ready — UIKit is still the way to go! | by Sid Thomas

> 💎 토스에서도 서버에서 UI 뷰를 결정해서 내려주는 방식을 시도하고 있다고 들었는데, 비슷한 방법으로 뷰 아키텍처를 정하고 JSON으로 보낸 뷰를 구현한 방법을 설명합니다 Server-Driven UI using SwiftUI | by Elyes DER

> 💎 구글 웹 폰트 목록을 가져와서 보여주는 흥미로운 예제입니다. Creating a Google Fonts Browser in SwiftUI for MacOS | by Scott Andrew

> ChatGPT와 대화하면서 프로그래밍 코드를 만들어가는 경험을 이어서 설명합니다 Another ChatGPT SwiftUI Session | by Michael Long

> 요즘 SwiftUI 따라하기 튜토리얼 글들이 엄청 많네요. 그 중에서도 ViewBuilder로 뷰를 생성하는 글입니다 SwiftUI Tutorial: Create Child Views with ViewBuilder | by Arc Sosangyo

> TCA로 타이머를 구현하는 과정에서 설정 화면을 다루는 예제입니다. Timer, Interactive Ticks Using TCA | by mein

> Building a Hexagonal Grid With the SwiftUI Layout Protocol | by Konstantin Semianov

> Building custom layout in SwiftUI. LayoutValueKey. | Swift with Majid

> Concurrency in modern Swift with Async & Await in SwiftUI — Part 1 | by DevTechie

> How to Create an iOS Lock Screen Widget? | by Lee Kah Seng

> SwiftUI Tutorial -Creating a Style-able Address Form Component — Part 1 | by Taha Bebek

# 뷰 프로그래밍 : UIKit

> 이제 UIKit 자료는 이렇게 처음 공부하는 분들 자료가 아니면 거의 없네요 Bullet List With UIKit | by Ed

> 이제 iOS 13+ 이상으로 타깃을 올리는 곳이 많아져서 UICollectionViewCompositionalLayout 활용도가 높아질 것 같습니다 Implementing Pinterest-like layout using compositional layout | by Evgenii Shishko

> Split View For iPad with Auto Layout Constraints | by lyvennitha sasikumar

# 프레임워크
다양한 프레임워크를 다루는 예제를 소개하는 글들입니다. 

> 💎 전세계 전화번호에서 국가 코드랑 포맷에 맞는지 검사하기 위한 방법을 설명합니다 Swift global Phone Number Formatter & Mask easy to use | by Diney Bomfim

> 💎 쉐이더에 대해 설명하기 위해서 CPU와 GPU 차이점부터 설명하는 보기 드문 글이네요 Shaders | Dan Hollick

> 예제 코드 수준이라 오디오 파형을 이렇게 할 수 있다 정도입니다 Audio visualization using Swift/SwiftUI | by Karen Mirakyan

> 저는 Reactive Programming을 함수형으로 다루는 방식과 FRP를 구분해야 한다고 생각하는 데 이 글은 좀 뒤섞여있네요. 그 부분이 좀 아쉬운 글입니다 Functional Reactive Programming using Combine framework | by Mahesh Nagpure

> 3D 체스 만들기를 설명합니다 Setting Up a Multiplayer 3D Chess Using RealityKit, ARKit, and SwiftUI | by Mark Lucking

> WPS 원리와 동작을 설명합니다 Wi-Fi positioning system (WPS) on iOS | by ChihSheng, Feng

> StoreKit 2로 인앱 구독 구현하는 예제입니다 iOS In-App Subscription Tutorial with StoreKit 2 and Swift

> Using App Intents with iOS 16 | by Giulio Caggegi


# macOS와 AppKit

> 보기 드물게 맥용 팝업 버튼을 만드는 과정을 설명합니다 Pop-Up And Pull-Down Buttons in AppKit | by Gabriel Theodoropoulos

> macOS에서 DMG로 앱 인스톨을 하는 이유를 설명합니다 Why DMG Disk Images Are Used To Install Applications On macOS | by Jakub Jirak

# 개발 환경

> 빌드 옵션과 Xcode 기능을 활용해서 빌드 시간 최적화를 하는 팁입니다. 잘 모르던 옵션을 활용하면 좋겠네요 Build Time Optimizations (Xcode) | by Dhruvil Patel

> simctl 명령으로 status_bar 옵션이 안되는 내용입니다 Workaround: simctrl status_bar broken for iOS 16 simulators · Jesse Squires

# 테스트

> 💎 실행할 때 인자값에 따라서 UI 테스트를 다르게 하는 방법을 정리했네요 Configuring UI tests with launch arguments

# 도구/오픈소스 

> 네트워크 요청을 선언적으로 다루기 위해 RequestDL 이라는 오픈소스를 만들고 사용하는 방법을 정리한 글이네요 Swift: Declarative request builder | by brenno


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