iOS/SwiftUI

· iOS/SwiftUI
Demystify SwiftUI - Dependency종속성(Dependency)은 SwiftUI가 언제, 그리고 왜 UI를 업데이트해야 하는지 이해하는 방식입니다. 이는 앱의 성능과 정확성에 직결됩니다.종속성이란 뷰의 입력값(input)으로, 종속성이 변경되면 뷰는 새로운 body를 생성합니다. 여기서 입력값은 @State, @Binding, 프로퍼티 등이 있고, 이 값들이 변경되면 뷰는 다시 그려집니다.body는 뷰의 계층 구조를 만드는 곳이고, 이 뷰의 게층 구조를 더 깊이 보면, 액션(action)이 있는 버튼이 있습니다. 액션은 뷰의 종속성에 변경을 일으킵니다. SwiftUI의 뷰 계층은 단순한 트리 구조가 아니라 ‘그래프’ 구조입니다. 왜냐하면 여러 뷰가 하나의 동일한 데이터 소스에 의존할 수..
· iOS/SwiftUI
Demystify SwiftUI - LifetimeLifetime(수명)은 SwiftUI가 뷰와 데이터의 존재에 대해 추적하는 방법으로, 뷰의 identity(정체성)가 유지되는 기간을 의미입니다. 하지만 여기서의 뷰의 수명은 struct의 자체의 수명이 아닙니다. View value와 Identity의 차이영상에서는 고양이에 비유하여 View의 Value와 Identity에 대해 설명합니다.뷰의 값 (Value) - "고양이의 순간적인 사진"body 프로퍼티가 실행될 때마다 생성되는 struct 인스턴스입니다.이것은 "졸고 있는 테세우스", "놀고 있는 테세우스"처럼 순간을 포착한 사진과 같습니다.SwiftUI는 이 '사진'을 이전 '사진'과 비교하여 변경 사항이 있는지 확인한 다음, 바로 버립니다. ..
· iOS/SwiftUI
Source of TruthUIKit과 SwiftUI의 차이점 중 가장 중요한 부분 중 하나는 SoT(Source of Truth)라고 생각합니다. UIKit에서는 데이터와 UI의 상태를 개발자가 직접 일치시켜줘야 했습니다. 하지만 이 과정에서 실수가 발생하면 데이터와 UI가 서로 다른 상태를 가지는 불일치 문제가 생기고, 이는 예측하기 어려운 버그의 원인이 되었습니다.하지만 SwiftUI에선 SoT라는 개념을 통해 이러한 문제를 해결하였습니다. SoT는 데이터의 일관성과 정확성을 유지하는 중요한 개념으로, 데이터는 오직 한 곳에서만 관리되고, 모든 UI는 해당 데이터를 바라보며 자신(뷰)을 그립니다. 즉, 데이터가 변경되면 UI는 자동으로 변경되기 때문에, 데이터 불일치 문제가 차단되고, 코드 구조가 ..
· iOS/SwiftUI
Demystify SwiftUISwiftUI엔 Identity, Lifetime, Dependency의 개념이 존재하는데, 해당 개념들은 SwiftUI가 뷰를 효율적으로 그리고 업데이트하는지를 이해하는데 매우 중요한 개념입니다.정체성 (Identity): 뷰를 서로 구별하고 알아보는 방법수명 (Lifetime): 뷰와 데이터가 언제까지 존재하는지를 추적하는 방법종속성 (Dependencies): 뷰가 어떤 데이터에 의존하며, 언제 업데이트되어야 하는지를 파악하는 방법 IdentityIdentity는 SwiftUI가 여러 화면 업데이트 과정에서 UI 요소를 "같은 것" 혹은 "다른 것"으로 인식하는 방법입니다. 아이콘이 사라졌다가 나타나는 fade 효과를 보일지, 아니면 slide 전환 효과를 보일지는 S..
· iOS/SwiftUI
View ProtocolUIKit과 비교하였을 때 SwiftUI의 특징은 struct로 이루어졌다는 것과 View Protocol을 채택하고 있다는 것입니다. SwiftUI에서 우리가 작성하는 대부분의 화면은 View 프로토콜 기반으로 구성되며, 그 중심에는 body라는 프로퍼티가 존재합니다.@MainActor @preconcurrency public protocol View { /// The type of view representing the body of this view. /// /// When you create a custom view, Swift infers this type from your /// implementation of the required ``View/b..
· iOS/SwiftUI
SwiftUI는 애플이 만든 선언형(Declarative) UI 프레임워크로, iOS, macOS, watchOS, tvOS 전반에서 통일된 방식으로 앱의 UI를 구축할 수 있게 해주는 프레임워크입니다. SwiftUI의 탄생 배경UIKit, AppKit 등 기존의 프레임워크는 다음과 같은 문제점을 가지고 있었습니다.UIKit / AppKit의 문제설명명령형 구조복잡한 상태 변화 처리, 많은 버그 유발뷰 업데이트직접 상태를 추적하고, 뷰를 수동으로 갱신코드 중복플랫폼마다 API가 달라, iOS와 macOS 개발을 별도로 해야 함UI와 로직 분리 어려움코드 양이 많아지고, 의도 파악이 힘듦 애플은 이러한 문제를 해결하기 위해 다음과 같은 특징을 지니고 있는 SwiftUI를 개발하였습니다.Swift의 안전성과..
· iOS/SwiftUI
ViewModifier A modifier that you apply to a view or another view modifier, producing a different version of the original value. protocol ViewModifier Overview ViewModifier 프로토콜은 어떠한 뷰에서도 적용할 수 있는 재사용 가능한 modifier를 생성하는 것입니다. 예를 들어 SwiftUI를 통해 View를 만들 때, 글자 크기나 폰트 등이 공통적인 특성을 가지는 경우가 있습니다. 이러한 경우에 코드를 작성할 때 각각의 특성을 모두 작성하게 된다면, 코드의 가독성이 떨어지고 비효율적이게 됩니다. 따라서 이러한 공통적인 특성을 묶어서 관리하고 원할 때마다 해당하는 공통적인..
Dev_Ted
'iOS/SwiftUI' 카테고리의 글 목록