분류 전체보기
-
[SE-0504] Task Cancellation ShieldsSwift 2026. 1. 17. 09:03
안녕하세요. 그린입니다 🍏이번 포스팅에서는 SE-0504 Task Cancellation Shields에 대해 정리해보겠습니다 🙋🏻여기서는 제가 이해한걸 바탕으로 요약하고 나름대로 정리한것으로 전체 요약없이 디테일한 부분까지도 원본이 궁금하시면 아래 원문을 참고해주세요!IntroSwift Concurrency 환경에서 Task 취소는 협력적(cooperative)으로 동작합니다.한번 취소되면 되돌릴 수 없고, 자식 Task까지 전파되죠. 그런데 문제는 리소스 정리 같은 코드는 취소 여부와 상관없이 반드시 실행되어야 한다는 점입니다. 지금까지는 이를 해결하기 위해 unstructured task를 생성하는 꼼수를 써야 했는데, 이번 SE-0504는 이 문제를 정면으로 해결하는 제안입니다. 최근 승인된..
-
[SE-0502] Exclude private initialized properties from memberwise initializerSwift 2026. 1. 11. 09:51
안녕하세요. 그린입니다 🍏이번 포스팅에서는 SE-0502 Exclude private initialized properties from memberwise initializer에 대해 정리해보겠습니다 🙋🏻IntroSwift에서 struct를 사용하다 보면, 의식하지 않아도 자연스럽게 활용하게 되는 기능 중 하나가 바로 memberwise initializer입니다. 저장 프로퍼티를 선언하기만 하면, 컴파일러가 알아서 이니셜라이저를 만들어 주는 기능이죠. 하지만 이 편리한 기능은, 접근 제어자(private, fileprivate)와 엮이기 시작하면 생각보다 많은 불편함과 함정을 드러냅니다. 이번 글에서는 Swift Evolution Proposal SE-0502 – Exclude private in..
-
Recap 2025회고 2026. 1. 3. 11:16
안녕하세요. 그린입니다 🍏 이번 포스팅은 2025년도 회고 결산 포스팅입니다 😃 다들 새해는 보고 오셨나요?저도 떠오르는 태양을 바라보면서 다시 올해 다짐을 하는 시간을 가지려고 일출 스팟으로 갔는데 너무 춥더라구요 🥲그래서 태양이 떠오르는걸 다 보지 못하고 찍먹하듯이 보면서 와서 다짐은 지금 이걸 쓰면서 해보게 되었습니다ㅎㅎ..그래도 어그제가 새해 였으니 올해는 늦지 않게 회고를 해보는것 같아요. 작년까지는 사실상 회고 때 뭔가 쓸만한 포인트들이 정말 많았는데 올해는 업무에 거의 올인을 하여 아이템은 이전보다는 몇개 없지만 한번 정리해보려 합니다 😃 당연하게도 늘 그랬듯이 이번 2025년 회고도 무형식 & 무근본 회고입니다. 어떻게 회고를 해볼까? 🤔1️⃣ 2025년 목표 달성 체크2️⃣ 20..
-
Embedded Swift Improvements Coming in Swift 6.3Swift 2025. 12. 26. 08:56
안녕하세요. 그린입니다 🍏이번 포스팅에서는 Swift 6.3의 Embedded Swift 개선 사항에 대해 알아보겠습니다 🙋🏻(지금은 아직 Swift 6.3 릴리즈 전입니다 😁)Swift 6.3에서 Embedded Swift가 대폭 업그레이드됩니다.마이크로컨트롤러 개발이 더욱 편해질 예정이에요!Embedded Swift?Embedded Swift는 마이크로컨트롤러처럼 리소스가 제한된 환경에서 동작하도록 설계된 Swift의 부분 집합입니다.특별한 컴파일 모드를 사용해서 일반 Swift보다 훨씬 작은 바이너리를 생성하죠.Swift 언어의 대부분은 Embedded Swift에서도 똑같이 동작하구요. 지난 몇 달간 C 상호운용성부터 디버깅, 링키지 모델까지 다양한 개선이 이루어졌는데 하나씩 살펴볼게요. ..
-
Nonexhaustive enums - Swift 6.2.3Swift 2025. 12. 20. 10:08
안녕하세요! 그린입니다 🍏이번 포스팅에서는 Nonexhaustive enums에 대해 알아보겠습니다 🙋🏻 Swift 6.2.3에 정말 중요한 기능이 추가됩니다. SE-0487: Extensible Enums! 지금까지 Swift 패키지를 만들 때 enum에 case를 추가하면 breaking change가 발생하죠?이제 그 문제가 해결될 수 있습니다. AS-IS Problem// Version 1.0public enum HTTPStatus { case ok, notFound, serverError}// Version 1.1 - 새 case 추가public enum HTTPStatus { case ok, notFound, serverError case earlyHints // 🆕..
-
SwiftUI View hierarchy DebuggingSwiftUI 2025. 12. 13. 07:42
안녕하세요. 그린입니다 🍏이번 포스팅에서는 SwiftUI View hiearchy Debugging에 대해 알아보겠습니다 🙋🏻Xcode View Debugging우선, Xcode에는 ViewDebug를 할 수 있게 View Hiearchy를 해볼 수 있어요. 많이 사용하고 계실 이 기능이죠.물론, Reveal, Lookin, Rocketsim 등 요새는 다양하게 뷰 디버깅을 위한 툴이 나와서 더 잘 쓸 수 있지만 핵심 본질을 같긴합니다. 여기서 뭐가 중요하냐하면, 이 계층 구조가 어떤 컴포넌트로 이뤄졌는지를 볼때에요. 좌측 계층 구조 스택을 보면 여기서 SwiftUI로 그려진 ContentView가 호스팅되어서 나타나죠.제가 코드에서 사실 ContentView에 ChildView라는 컴포넌트로 ..
-
NSAttributedString Performance OptimizationSwift 2025. 12. 6. 08:59
안녕하세요. 그린입니다 🍏UITextView나 UILabel에서 수천 줄의 텍스트를 다룰 때 앱이 버벅이거나 메모리가 터지는 경험 있으신가요?이번 포스팅에서는 NSAttributedString의 성능 최적화에 대해 다뤄보겠습니다. Apple 엔지니어의 공식 답변을 토대로 방법들을를 정리해봤어요.Attribute Dictionary는 자동으로 중복 제거가장 먼저 알아야 할 사실은 NSAttributedString은 내부적으로 동일한 attribute dictionary를 자동으로 uniquify합니다.Apple 엔지니어의 공식 답변2015년, Apple의 TextKit 엔지니어 Aki Inoue가 공식 확인해준 대목이 있습니다. Memory optimization of NSAttributedStringD..
-
SwiftUI Preview - ThunkSwiftUI 2025. 11. 29. 21:38
안녕하세요. 그린입니다 🍏이번 포스팅에서는 SwiftUI Preview가 어떻게 코드 변경을 실시간으로 반영하는지 그 내부 구조를 깊게 파헤쳐보려고 합니다 🙋🏻Preview is not magicSwiftUI Preview는 마치 마법처럼 알아서 짠하고 작동하는것처럼 보이죠.struct ContentView: View { var body: some View { Text("Hello") // If you change this }}#Preview { ContentView() // It will be update immediately} 앱 전체를 다시 빌드하지 않아도 Preview가 즉시 반영되는 이유는 바로 Xcode가 자동 생성하는 Preview-Thunk 파일(.prev..