기사 목록
119개의 글이 있습니다
@StateObject와 @ObservedObject의 차이와 선택 기준
@StateObject vs. @ObservedObject: The differences explained
- 두 래퍼 모두 ObservableObject의 변경을 관찰하지만, 뷰가 객체의 생명주기를 소유하고 보존하는 역할은 @StateObject에만 있다.
- 뷰가 객체를 직접 만들면 @StateObject를 사용하고, 부모 등 외부에서 전달받으면 @ObservedObject를 사용해야 한다.
- iOS 17 이상을 대상으로 하는 새 코드에서는 @Observable과 @State를 고려할 수 있으며, 주입된 모델에는 필요에 따라 @Bindable을 사용한다.
Swift 6.4에서 확장되는 Embedded Swift 기능
Embedded Swift Improvements Coming in Swift 6.4
- Swift 6.4의 Embedded Swift는 모든 `any` 타입과 메타타입을 지원해 기존 Swift 코드에서 사용할 수 있는 언어 기능의 범위를 넓힌다.
- 비형식 `throws`와 throwing task·task group을 사용할 수 있지만, `any Error`를 던지는 경우 힙 할당이 발생할 수 있어 할당을 피하려면 typed throws를 선호해야 한다.
- 부동소수점 문자열 파싱 API도 지원 대상에 포함되며, 새 기능은 Swift 개발 스냅샷과 Embedded Swift 예제 저장소에서 시험할 수 있다.
Swift Testing의 매크로와 주요 테스트 기능
Swift Testing explained with code examples
- Swift Testing은 @Test와 #expect 매크로를 사용하며, 새 Xcode 프로젝트의 기본 테스트 프레임워크로 XCTest의 테스트 메서드 접두사와 여러 assertion 메서드를 대체합니다.
- struct로 테스트를 계층화하고, 매개변수화 테스트로 반복 입력을 한 테스트에 모을 수 있으며, #require와 첨부 파일 기능은 테스트 실행과 실패 진단을 지원합니다.
- Swift 6.2 및 Xcode 26 이상에서는 자식 프로세스에서 종료 테스트를 실행할 수 있지만, iOS는 지원되지 않으며 캡처 값은 Sendable과 Codable을 모두 준수해야 합니다.
Hotwire Native에 바랐던 Rails 중심 모바일 앱 개발 방식
What I wish Hotwire Native was
- Hotwire Native는 Rails 개발자에게 Swift와 Kotlin, Xcode, 시뮬레이터 디버깅까지 요구하므로 모바일 앱 출시를 목표로 하는 개발자에게 부담이 된다고 지적한다.
- Ruby Native는 탭 바와 내비게이션 버튼부터 푸시 알림, 딥 링크, 인앱 구매까지 Rails 서버와 뷰에서 제어하고 네이티브 앱을 자동으로 갱신하는 방식을 제시한다.
- Ruby Native는 App Store 계정과 API 키를 연결하면 인증서 처리, 빌드, 스크린샷 생성, 배포까지 수행해 Rails 코드베이스만 유지하려는 개발자를 대상으로 한다.
2026년 7월 Swift 소식: 동시성 런타임과 테스트 기능 업데이트
What's new in Swift: July 2026 Edition
- Swift Concurrency 런타임에 작업 분배 방식을 바꾸는 Task Stealers가 병합됐고, SwiftPM에는 자체 호스팅을 시작할 수 있는 패키지 레지스트리 참조 구현과 기본 인증 지원이 추가됐다.
- Swift Testing의 태그 기반 테스트 필터링과 실행 파일 경로를 제공하는 CommandLine.executablePath가 향후 릴리스를 위한 제안으로 채택됐으며, withDeadline 제안도 수정 후 채택됐다.
- 제로 카피 토크나이저 swift-gigatoken과 Swift 오류를 값 의미론 기반으로 지우는 any-error-swift가 소개됐고, 커뮤니티에서는 여러 워킹그룹과 Google Summer of Code 기여가 이어졌다.
Vapor 백엔드에 컬렉션·태그·필터링·페이지네이션 추가하기 (5)
Add Collections, Tags, Filtering, and Pagination to My First Vapor Backend in 2026 pt. 5
- LinkVault의 링크를 컬렉션에 선택적으로 연결하고, LinkTag 피벗 모델을 통해 링크와 태그의 다대다 관계를 구성한다.
- 컬렉션·태그·링크 조회는 인증된 사용자의 데이터로 범위를 제한하며, 다른 사용자의 리소스를 연결하거나 조회하지 못하도록 검증한다.
- 링크 목록 API는 읽음 여부, 컬렉션 ID, 태그 ID로 필터링하고 페이지와 페이지당 개수를 지정해 결과를 조회한다.
Vapor 백엔드에 검증과 컨트롤러 구조 적용하기 (4)
Adding Some Clean Up and Validation to My First Vapor Backend in 2026 pt. 4
- Signup·Login·링크 요청 DTO에 Validatable 규칙을 추가해 이메일, 문자열 길이, URL 등 요청 데이터의 조건을 route 로직에서 처리하기 전에 확인한다.
- Link 모델을 직접 응답으로 반환하지 않고 LinkResponse로 공개 필드를 제한하며, 토큰 생성은 실패 시 오류를 던지도록 바꿔 보안 관련 처리를 명시한다.
- 인증과 링크 처리를 AuthController·LinkController로 옮기고 routes.swift에는 경로 등록과 인증 그룹만 남겨 API 구조를 읽기 쉽게 정리한다.
2026년 6월 Swift 주요 업데이트
What's new in Swift: June 2026 Edition
- WWDC26에서 Swift의 운영체제 커널 적용, Swift로 재작성한 QUIC 전송 계층, Foundation Models 도구와 경량 Linux 환경 도구가 소개됐다.
- Swift Evolution에서는 비동기 작업의 절대 마감 시간을 다루는 withDeadline이 심사 중이며, yielding accessors와 FilePath, UniqueArray 관련 제안이 채택됐다.
- 커뮤니티에서는 250명 이상이 참여한 CommunityKit 행사가 열렸고, Swift Package Index는 Apple과 함께 Swift 패키지 레지스트리 구축을 진행한다.
Apple, TrueType 힌팅 인터프리터를 Swift로 재작성
Swift Package Index Update
- Apple은 신뢰할 수 없는 입력을 처리하는 TrueType 힌팅 인터프리터를 C에서 메모리 안전한 Swift로 재작성해 Apple 플랫폼의 보안 표면을 개선했다.
- 새 Swift 인터프리터는 기존 C 구현을 대체했으며, 평균 실행 속도가 C 구현보다 13% 빨라졌다.
- 재작성한 Swift TrueType 힌팅 인터프리터의 소스 코드도 공개해 비슷한 작업을 하는 개발자가 구현 경험을 참고할 수 있도록 했다.
CocoaPods 서비스 종료와 패키지 매니저의 읽기 전용 전환 전략
Sunsetting a Package Manager
- CocoaPods가 2026년 12월 2일부터 trunk 서버를 읽기 전용으로 전환하며, 신규 포드 및 버전 등록을 영구 중단한다.
- 기존 10만 개 이상의 라이브러리는 GitHub Specs 저장소와 jsDelivr CDN을 통해 계속 제공되어 프로젝트 빌드 안정성을 유지한다.
- 이번 전환은 인력 부족과 보안 취약점 노출에 따른 결정이며, 사용자는 수동으로 Swift Package Manager(SPM)로 마이그레이션해야 한다.