ObservableObject, @ObservedObject, StateObject
ObservableObject Combine에서 ObservableObject를 사용하는 이유는 해당 프로토콜을 채택한 객체의 상태 변화를 감지하고 UI에 즉시 실시간으로 반영하기 위해서 입니다. class ViewModel: ObservableObject { @Published var count = 0 } `@Published` ...
ObservableObject Combine에서 ObservableObject를 사용하는 이유는 해당 프로토콜을 채택한 객체의 상태 변화를 감지하고 UI에 즉시 실시간으로 반영하기 위해서 입니다. class ViewModel: ObservableObject { @Published var count = 0 } `@Published` ...
제네릭은 다양한 타입에서 동작할 수 있는 코드를 작성할 수 있도록 해준다. 제네릭 함수 같은 로직의 함수임에도 타입이 달라서 두번 선언해야함. //Int 타입의 두 값을 바꾸는 함수 func swapInts(_ a: inout Int, _ b: inout Int) { let temp = a a = b b = temp ...
Swift 위젯의 구조: Provider와 생성자의 이해 iOS 14부터 애플은 홈 화면에 위젯을 배치할 수 있도록 WidgetKit을 도입했다. SwiftUI 기반으로 작성되는 위젯은 앱과는 다른 생명주기와 구조를 가진다. 이 글에서는 위젯을 구성하는 핵심 구조인 Provider, 그리고 위젯에서 종종 만나는 생성자 규칙에 대해 다룬다. 위젯...
전체 코드 extension Array: RawRepresentable where Element: Codable { public init?(rawValue: String) { guard let data = rawValue.data(using: .utf8), let result = try? JSONDeco...
Swift에서 struct와 class의 차이 – 언제 어떤 타입을 써야 할까? Swift에서는 데이터 모델을 만들 때 struct와 class 두 가지 타입 중 선택할 수 있다. 둘은 비슷해 보이지만, 실제로는 메모리 관리, 동작 방식, 사용 용도에서 중요한 차이가 있다. 이 글에서는 struct와 class의 차이를 정리하고, 언제 어떤 상황에...
계층적 콘텐츠를 탐색하기 위한 스택기반 체계의 뷰 컨트롤러이다. 어떤 아이템을 클릭하면 상세 페이지로 넘어가면서 이전 페이지와 현재 페이지 사이의 계층이 생긴다. UINavigationController는 여러 개의 UIViewController를 스택(Stack) 자료구조 형태로 관리하는 컨테이너 뷰 컨트롤러다. 내부적으로 ViewControll...
객체 간의 통신을 위한 디자인 패턴. 한 객체가 자신의 일부 기능을 다른 객체(Delegate)에게 위임하는 방식 📎 필요한 이유 중복되는 코드를 줄이고 유연하게 객체를 사용하기 위해서 ⛳ 델리게이트 패턴 구조 Protocol 정의 Delegate 객체 생성 및 프로토콜 채택 위임자에게 실행 요청 1. Protoco...
래치(Ratch) : 0 or 1의 데이터를 저장할 수 있는 최소의 단위 레지스터 : 8개의 래치로 구성된 메모리의 최소 단위, 숫자 한개를 저장할 수 있음 캐시(Cashe)의 역할 CPU에서 램의 데이터를 읽어올때 하나씩만 읽어오면 이동이 많기때문에 램의 특정 블럭에 있는 모든 데이터를 복사해서 CPU...
Swift Getter & Setter 완벽 가이드 목차 개요 기본 개념 Computed Properties Property Observers 실제 활용 사례 성능 고려사항 개요 Swift에서 Getter와 Setter는 클래스, 구조체, 열거형의 프로퍼티에 접근하고 값을 설정하는 메커니즘입니다. 이들은 데이터 캡...
Swift Async/Await 핵심 가이드 Swift 5.5에서 도입된 async/await는 복잡한 콜백 지옥을 해결하고 직관적인 비동기 코드를 작성할 수 있게 해줍니다. async의 역할 async 키워드는 함수가 비동기적으로 실행될 수 있음을 선언합니다. 이는 함수가 실행 중간에 멈출 수 있고, 다른 작업에게 실행 기회를 줄 수 있다는 의...