[Swift] ARC(Automatic Reference Counting)란 무엇인가
·
Apple/Swift
Swift로 개발하다 보면 [weak self]나 unowned를 코드 곳곳에서 마주치게 됩니다. 이것들이 왜 필요한지, 언제 써야 하는지 명확하게 이해하려면 ARC를 알아야 합니다. 이번 포스팅에서는 ARC가 무엇인지부터 실제 문제가 발생하는 상황과 해결 방법까지 정리를 해보려고 합니다. ARC란?ARC(Automatic Reference Counting)는 Swift가 메모리를 자동으로 관리하는 방식입니다. 클래스 인스턴스가 생성되면 Swift는 해당 인스턴스에 대한 참조 카운트(Reference Count)를 1로 설정합니다. 이후 어딘가에서 이 인스턴스를 참조할 때마다 카운트가 1씩 증가하고, 참조가 끊길 때마다 1씩 감소합니다. 카운트가 0이 되는 순간 메모리에서 해제됩니다. class Use..
[Swift] 왜 Class는 Initializer를 자동으로 만들어주지 않을까?
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 Swift로 개발을 하다보면 한 가지 의문이 생기게 됩니다. 구조체인 Struct는 프로퍼티만 선언하면 init이 자동으로 생기는데, Class는 왜 직접 써줘야 할까?struct Point { var x: Int var y: Int // init(x: Int, y: Int) 자동 생성 }class PointClass { var x: Int var y: Int // 자동 생성 안 됨 -> 직접 써야 함} Struct는 왜 자동 생성이 가능할까?Struct는 상속이 없습니다.(상속이 안 되는 건 아닌데 일단 그냥 구조체와 클래스 두가지로만 보면)컴파일러의 입장에서 보면, 지금 선언된 프로퍼티가 이 타입의 전부입니다. 그래서 모든 프로퍼티를 ..
[SwiftUI] Observation 알아보기
·
Apple/SwiftUI
Observation이 뭘까?Observation은 프로퍼티의 변화를 추적하는 Swift의 새로운 기능입니다. 보통 데이터 모델 타입을 작성할 때는 여러가지 프로퍼티가 들어갑니다.class FoodTruckModel { var orders: [Order] = [] var donuts = Donut.all} 여기에 @Observable을 추가하기만 해도 UI가 데이터 모델의 변화에 대응할 수 있게 됩니다.@Observable class FoodTruckModel { var orders: [Order] = [] var donuts = Donut.all} @Observable은 Swift 컴파일러에게 명령을 내려서 우리가 작성한 코드를 확장형 observable 타입으로 바..
[SwiftUI] ViewBuilder 알아보기
·
Apple/SwiftUI
안녕하세요! 피피아노입니다 🎵 이번 포스팅에서는 ViewBuilder에 대해서 정리를 해보려고 합니다.ViewBuilder란?Apple의 공식 문서 설명에는 "Closure로부터 View를 구성하는 사용자 지정 매개변수 속성"이라고 합니다.A custom parameter attribute that constructs views from closures. https://developer.apple.com/documentation/swiftui/viewbuilder ViewBuilder | Apple Developer DocumentationA custom parameter attribute that constructs views from closures.developer.apple.com 일반적으로 '..
[Swift] SwiftData 상속과 스키마 마이그레이션 알아보기
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 WWDC 세션 SwiftData: 상속과 스키마 마이그레이션 자세히 알아보기 세션을 보고 내용을 정리해보려고 합니다. 이번 세션의 핵심은 iOS 26에서 새롭게 도입된 클래스 상속 지원과 더 효율적인 데이터 관리 및 마이그레이션 전략입니다. SwiftData의 클래스 상속(iOS 26 신기능)이제 SwiftData 모델에서도 클래스 상속을 활용해 계층 구조를 설계할 수 있습니다. 상속이 필요한 이유에 대해서 먼저 간단하게 살펴보자면, 우리가 여행 앱을 만든다고 가정을 해보겠습니다. 우리에게는 '개인 여행'과 '출장' 데이터가 있습니다. 둘 다 '장소'와 '날짜'라는 공통점을 가지고 있지만, '목적'이나 '비용' 같은 고유한 데이터도 필요합니다. 상속이 생기기 전에는 Pe..
[Swift] Swift 6로 마이그레이션 하기
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 이번 포스팅에서는 WWDC24 세션 "Migrate your app to Swift 6"의 내용을 바탕으로 내 앱을 Swift 6로 마이그레이션 하는 방법에 대해서 정리를 해보려고 합니다. 더 자세한 내용은 아래 링크 참고해 주세요!Why Swift 6?내 앱은 이미 잘 돌아가고 있는데 왜 굳이 Swift 6로 올려야 하지?라는 생각이 드실 수 있습니다. Swift 6 전까지는 개발자가 '이 작업은 메인 스레드에서, 저 작업은 백그라운드에서'라고 기억하면서 DispatchQueue를 복잡하게 사용해야 했습니다. 만약에 실수로 한 데이터를 여러 곳에서 동시에 수정하면 앱이 크래시가 발생하거나 데이터가 꼬이는 Data Race라는 게 발생했습니다. 하지만 Swift 6에서는 ..