iOS

·iOS/SwiftUI
안녕하세요, iOS 개발하는 루피입니다!이전 글에서 SwiftUI의 상태 관리 기본 개념과 특징에 대해 알아보았습니다. 이번 글에서는 상태를 하위 뷰와 공유하는 방법, Observable 객체와의 활용, 그리고 성능 최적화와 일반적인 실수에 대해 알아보겠습니다.바로 시작합니다.하위 뷰와 상태 공유하기 (Share state with subviews)상태 프로퍼티를 하위 뷰로 전달하면, 상위 뷰에서 해당 값이 변경될 때마다 SwiftUI는 하위 뷰를 자동으로 업데이트합니다. 하지만 하위 뷰는 이 값을 수정할 수 없습니다. 하위 뷰가 상태 값을 수정할 수 있게 하려면, 상태 대신 바인딩을 전달해야 합니다. 예를 들어, PlayButton에서 isPlaying 상태를 제거하고, 대신 바인딩을 받도록 변경할 수..
·iOS/SwiftUI
안녕하세요, iOS 개발하는 루피입니다! 오늘은 SwiftUI의 선언적 UI 패러다임의 핵심인 상태 관리에 대해 알아보겠습니다. 특히 가장 기본이 되는 State 프로퍼티 래퍼를 중심으로 공식 문서를 바탕으로 정리해보았습니다. 바로 시작합니다.@State란 무엇인가?@State는 SwiftUI에서 제공하는 Property Wrapper 타입의 하나로, 변수 앞에 위치하며 해당 프로퍼티 데이터 값에 접근할 수 있고 또한 최신 값을 반영합니다. 이름 그대로 상태(State) 자체를 나타내며, 상태가 변하면 UI도 이에 맞게 변합니다.struct ContentView: View { @State private var name = "World" var body: some View { VSt..
·iOS/SwiftUI
안녕하세요, iOS 개발하는 루피입니다! 오늘은 SwiftUI의 UI 상태 관리에 대해 공식 문서를 바탕으로 정리해 보겠습니다. 바로 시작합니다.OverviewSwiftUI에서 상태 관리의 핵심은 각 뷰가 필요한 데이터를 캡슐화하여 독립적이고 재사용 가능한 컴포넌트로 만드는 것입니다.캡슐화란?여기서 캡슐화란 뷰가 데이터(@State)와 동작(UI 렌더링)을 내부에 정리하고, 외부에는 간단한 인터페이스(@Binding, 읽기 전용 속성)만 노출하는 것을 의미합니다. 이렇게 하면 뷰는 복잡한 내부 로직을 숨기고, 다른 화면이나 앱에서 쉽게 재사용할 수 있습니다.하지만 여기서 한 가지 오해가 생길 수 있습니다."아 그러면.... 모든 데이터들을 딱 뷰에 맞게 분산시키는 게 포인트구나???"아니요. 데이터를 뷰..
·iOS/SwiftUI
안녕하세요, iOS 개발하는 루피입니다! 오늘은 SwiftUI의 Model Data를 공식 문서를 바탕으로 간단하게 알아보겠습니다. 바로 시작합니다.Model Data란?SwiftUI 앱에서 UI로 표시되는 정보를 관리하는 데이터 구조를 의미합니다. 이는 사용자가 인터페이스를 통해 상호작용하고 수정할 수 있는 데이터를 표현하는 커스텀 타입입니다.Model Data를 왜 쓰는가?데이터와 뷰의 분리: 데이터 모델은 데이터와 상호작용하는 뷰와 데이터 자체를 분리합니다.모듈화 증진: 이러한 분리는 앱의 모듈화에 기여합니다.테스트 용이성: 데이터 로직을 UI와 분리함으로써 테스트가 더 쉬워집니다.코드 추론 개선: 앱의 작동 방식을 더 쉽게 이해하고 추론할 수 있게 합니다.OverviewSwiftUI는 선언적 방식..
·iOS/Swift
안녕하세요, 루피입니다. 오늘은 Concurrency의 핵심 개념인 메인 스레드에 대해 알아보겠습니다.모든 프로그램의 시작점, 메인 스레드모든 프로그램은 실행될 때 최소 하나 이상의 Thread를 갖게 되는데, 이 첫 번째 스레드를 바로 Main Thread라고 부릅니다. 간단한 커맨드라인 앱은 메인 스레드 하나만으로 모든 작업을 마칠 수 있지만, iOS 앱처럼 복잡한 프로그램은 여러 스레드를 사용합니다. 하지만 어떤 경우든, 앱이 실행되는 동안 메인 스레드는 항상 존재합니다. UI 작업은 메인 스레드에서가장 중요한 규칙입니다. 모든 UI 관련 작업(은 반드시 메인 스레드에서 처리해야 합니다. '가끔'이 아니라 '항상'입니다. 만약 다른 스레드에서 UI를 업데이트하려고 하면 어떻게 될까요?아무 일도 일어..
·iOS/Swift
안녕하세요, 루피입니다! 오늘은 Swift 동시성 과 병렬성에 대해 간단하게 정리해보겠습니다. 바로 시작합니다.단일 코어 CPU 일때단일 코어 CPU인 컴퓨터를 사용할 때, 우리는 컴퓨터가 여러 작업을 동시에 돌아가는 것과 같은 경험을 하게 됩니다.예를 들어, 우리는 인터넷을 쓰면서, 음악도 같이 틀어 놓을 수 있죠!! 하지만, 사실은 그렇지 않습니다. 단일 코어 CPU는 한 번에 딱 한가지 일만 할 수 있기 때문입니다.한 앱이 시작해서 살짝 작업을 진행하다 멈추고, 다른 앱이 시작해서 조금 진행하다 멈추고, 이러한 방식으로 반복하는 것입니다. CPU가 프로그램들 사이를 워낙 빨리 오가니깐 겉보기에는 다 같이 돌아가는 것처럼 느끼는 것뿐이죠. 이러한 개념이 바로 동시성입니다.두 번째 코어가 추가 된다면?..
·iOS/Swift
안녕하세요, 루피입니다! 오늘은 Dispatch Work Item에 대해 정리해 보는 시간을 가져보도록 하겠습니다. 바로 시작합니다.Dispatch Work Item 이란?수행하고 싶은 작업을 캡슐화해서, 완료 핸들러나 실행 의존성을 붙일 수 있게 해주는 도구입니다.Dispatch Work Item은 디스패치 큐나 디스패치 그룹에서 실행할 작업을 깔끔하게 묶어 놓은 것이라고 생각하면 편합니다..init { qos: DispatchQoS = .unspecified, flags: DispatchWorkItemFlags = [], block: @escaping () -> Void}매개변수 (Parameters)qos : 작업 아이템의 실행 우선순위를 정할 때 쓰이는 클래스예요. 이 작업이 얼마나 급한지 시스템..
·iOS/Swift
안녕하세요, 루피입니다. 오늘은 Dispatch Group에 대해 공부해 보겠습니다. 바로 시작합니다.Dispatch Group 이란?여러 작업을 하나의 단위로 묶어서 관리하고 모니터링할 수 있게 해 주는 도구입니다. 쉽게 말해, 여러 작업이 모두 끝날 때까지 기다리거나 그 진행 상황을 한꺼번에 파악하고 싶을 때 사용할 수 있는 기능입니다. 순서를 간략하게 정리해 보겠습니다!!그룹은 여러 작업을 하나로 묶어서 관리하고, 그 그룹에 맞춰 동작을 동기화할 수 있게 해 줍니다.여러 개의 작업 항목을 그룹에 추가한 뒤, 같은 큐나 서로 다른 큐에서 비동기적으로 실행되도록 설정해 줍니다. 모든 작업 항목이 실행을 마치면 그룹은 완료 핸들러를 실행합니다. 또는 그룹 내 모든 작업이 끝날 때까지 동기적으로 기다릴 수..
·iOS/Swift
안녕하세요, 루피입니다! 오늘은 Dispatch Queue의 종류에 대해 정리해 보겠습니다. 바로 시작합니다.시작하기 전에..많은 분들이 큐의 종류를 헷갈려 하십니다. 이렇게 정리하면 쉽습니다! Dispatch Queue라는 큰 우산 아래, 작업 처리 방식에 따라 Serial Queue와 Concurrent Queue로 나뉩니다.Serial Queue: 한 번에 하나의 작업만 순서대로 처리합니다.Concurrent Queue: 여러 작업을 동시에 처리할 수 있습니다. 그리고 이 기본적인 두 특성을 바탕으로 시스템이 제공하는 큐와 우리가 직접 만드는 큐가 있습니다.시스템 제공 큐:Main Queue: 시스템이 기본으로 제공하는 Serial Queue.Global Queue: 시스템이 기본으로 제공하는 Co..
·iOS/Swift
안녕하세요, 루피입니다. 오늘은 지난 글을 작성하면서 생겼던 궁금증을 해결해보는 시간을 가져보도록 하겠습니다. 바로 시작합니다.궁금증 발생Dispatch Queue에 대해 공부하면서 Concurrent + Sync 형태의 동작에 대해 의문을 가지게 되었습니다.Button("concurrent - sync") { print("A") concurrentQueue.sync { sleep(3) print("B") } print("C")}문제의 그 코드입니다.❓저의 생각은 이렇습니다. (처음 생각)❓Concurrent는 단일 Thread가 아닌 여러 Thread에 작업을 할당하는 Queue의 종류입니다. 즉, 직렬의 방식이 아닌 병렬의 방식으로 작업을 분배합니다. Sync는 등록한 ..
kimsangjunzzang
'iOS' 카테고리의 글 목록 (3 Page)