Swift 추상화와 프로토콜(인터페이스)
1. 추상화란? 추상화(Abstraction)는 복잡한 시스템에서 핵심 개념만 노출하고, 내부 구현은 숨기는 객체지향 설계 원칙이다. 무엇을 할 수 있는지 정의 어떻게 하는지는 숨김 Swift에서는 Protocol이 Java의 인터페이스 역할을 하며, 추상화를 실현하는 핵심 도구다. 2. Swift에서의 인터페이스 = Protoc...
1. 추상화란? 추상화(Abstraction)는 복잡한 시스템에서 핵심 개념만 노출하고, 내부 구현은 숨기는 객체지향 설계 원칙이다. 무엇을 할 수 있는지 정의 어떻게 하는지는 숨김 Swift에서는 Protocol이 Java의 인터페이스 역할을 하며, 추상화를 실현하는 핵심 도구다. 2. Swift에서의 인터페이스 = Protoc...
개요 NavigationSplitView는 SwiftUI에서 iPadOS, macOS 등 큰 화면에서 마스터-디테일 구조를 구현할 수 있는 기본 제공 UI 컴포넌트다. iOS 16+, macOS 13+부터 지원되며, 기존의 NavigationView보다 훨씬 명확한 3단 분할 구조를 지원한다. 기본 구조 NavigationSplitView...
애니메이션 적용하기 변경된 값을 기반으로 View의 변경 사항을 애니메이션으로 생성할 수 있다. 이렇게 하려면 애니메이션을 생성하려는 View에 .animation(_:value:) 제어자를 추가하고 변경 사항을 모니터링할 값과 Animation을 선택한다. @State var isOn = false Circle() .scaleEf...
SwiftUI의 @EnvironmentObject란? SwiftUI는 상태 관리를 위한 여러 도구를 제공한다. 그중에서도 @EnvironmentObject는 전역 상태 공유를 위해 사용되는 강력한 속성 래퍼다. View 간 데이터 전달에서 발생하는 복잡함을 줄여주며, 특히 앱의 다양한 화면에서 공통적으로 사용하는 모델을 관리할 때 유용하다. 1...
문제 상황 메인 페이지에서 사용자 정보를 서버로부터 정상적으로 응답받고 있음에도 불구하고, 프로필 이미지가 변경되지 않는 현상이 발생했다. 유저의 이름, 이메일 등 다른 정보는 정상적으로 갱신됨 유독 프로필 이미지만 이전 상태로 유지됨 직관적으로 보면 캐싱이나 이미지 로딩 문제처럼 보이지만, 실제로는 서버 측 응답 로직에서 발생한 문제였다....
SwiftUI의 @State – 뷰의 로컬 상태 관리 속성 래퍼 개요 @State는 SwiftUI에서 뷰 내부에서 상태를 관리하는 가장 기본적인 속성 래퍼다. 뷰가 소유하고 직접 변경할 수 있는 값이며, 상태가 변하면 뷰가 자동으로 다시 그려진다. 왜 필요한가? SwiftUI는 선언형 UI 프레임워크로, 상태가 변경되면 UI를 업데이트한다. 하...
개요 @Binding은 SwiftUI에서 상태(state)를 여러 뷰에서 공유하고 수정할 수 있도록 하는 속성 래퍼다. 상위 뷰가 가진 상태 변수를 하위 뷰에 전달해, 하위 뷰가 직접 해당 상태를 읽고 수정할 수 있게 해준다. 왜 필요한가? SwiftUI는 상태 변화를 감지해 UI를 업데이트한다. 그러나 상태는 보통 단방향 데이터 흐름을 가진...
GitHub Pull Request란? 협업의 핵심, 코드 리뷰의 시작 오픈소스든 회사 프로젝트든 협업 개발에서 가장 자주 사용되는 기능 중 하나가 Pull Request다. 하지만 초보 개발자에게는 개념도 헷갈리고 버튼도 많아 막막하게 느껴질 수 있다. 이 글에서는 Pull Request(이하 PR)의 개념, 작성 방법, 협업에서의 역할까지 ...
Swift의 @Published란? Swift에서 @Published는 Combine 프레임워크의 속성 래퍼로, ObservableObject 클래스 안에서 값이 변경될 때 자동으로 알림을 보내는 데 사용된다. SwiftUI와 함께 사용할 때 뷰가 상태 변화를 자동으로 감지하고 UI를 업데이트할 수 있도록 도와주는 핵심 구성요소다. 1. 언제...
SwiftUI에서 @StateObject란? SwiftUI에서 상태 관리는 앱의 흐름과 사용자 인터페이스를 동기화하는 핵심이다. @StateObject는 SwiftUI가 도입한 속성 래퍼로, 뷰 내부에서 ObservableObject를 생성하고 소유할 때 사용된다. 1. 왜 @StateObject가 필요한가? SwiftUI의 뷰는 상태에 따라 새...