Sendable 프로토콜
·
SwiftUI
Sendable 프로토콜은 객체가 concurrent code에서 안전하게 사용될 수 있다는 것을 명시합니다 Sendable이란?Sendable은 특정 타입이 여러 스레드 간 안전하게 전달될 수 있음을 나타냅니다. 이 프로토콜을 준수하면, 해당 타입의 인스턴스가 여러 스레드 간에 전달될 때 data race이나 무결성 문제가 발생하지 않음을 보장합니다. 예를 들어, 값을 복사하거나 스레드 간에 참조를 공유할 때 안전하게 사용할 수 있습니다. int, string과 같은 대부분의 기본 값 타입들은 기본적으로 Sendable을 준수합니다.let number: Int = 42 // Int는 기본적으로 Sendable Sendable 프로토콜을 준수하는 사용자 정의 타입만일 사용자가 정의한 타입이 Sendab..
AsyncPublisher (.value로 비동기적으로 데이터 처리)
·
SwiftUI
AsyncPublisher은 간단하고 비동기적으로 Publisher로부터 받는 데이터를 처리하고 싶을 때 사용합니다 코드로 이해하기우선 AsyncPublisherDataManager라는 클래스가 있고 @Published로 선언된 [String] 타입의 데이터가 존재합니다.addData 메서드를 이용하여 2초마다 데이터를 삽입하며 이것은 비동기적으로 수행됩니다.class AsyncPublisherDataManager { @Published var myData: [String] = [] func addData() async { myData.append("Apple") try? await Task.sleep(nanoseconds: 2_000_000_000) ..
MacPaw/OpenAI SwiftUI Package 분석하기
·
SwiftUI
ChatGPT를 이용한 앱을 만들기 위해서는 패키지에 대한 정보를 자세히 분석할 필요가 있습니다 https://github.com/MacPaw/OpenAI 에서는 OpenAI에서 공식으로 제공하는 ChatGPT API를 쉽게 사용할 수 있도록 만든 패키지입니다. OpenAI API를 사용하여 다양한 작업을 수행하는 방법을 한글로 설명드리겠습니다. 여기서는 API 초기화, 완성 요청, 채팅 요청, 이미지 생성, 오디오 변환 등의 주요 기능을 다룹니다.OpenAI 클래스 초기화API를 사용하려면 먼저 OpenAI 클래스를 초기화해야 합니다. 다음은 API 토큰을 사용하여 클래스를 초기화하는 방법입니다:let openAI = OpenAI(apiToken: "YOUR_TOKEN_HERE")또는 조직 식별자와 타..
Global Actor과 Main Actor
·
SwiftUI
Global Actor란 프로젝트 내부에서 접근 가능한 유일한 actor로 어디서든 다양한 선언을 isolate하는데 사용할 수 있는 타입입니다  Global Actor 이전에 Actor란아래는 메서드로 간단한 데이터를 가져오도록 하는 코드입니다. 이런 상황에서는 문제가 발생하지 않습니다.func getData() async { let data = await manager.getDataFromDatabase() // actor이므로 자동 async 코드로 인식 self.dataArray = data} 하지만 엄청 무거운 작업을 Main Thread 에서 작업한다면 문제가 발생할 수 있습니다. 이런 목적으로 Actor이 만들어졌습니다.Global Actor 사용 목적만약 아래와 같은 actor가..
Actor
·
SwiftUI
ActorActor를 알아보기 전에 아래 멀티 스레드 환경에서는 하나의 여러개의 스레드들이 하나의 Heap 메모리를 공유해서 사용하고 있는 것을 확인할 수 있습니다. Heap 메모리는 Actor와 Class 가 저장되며 Actor와 Class의 주요 차이점은 Actor는 Thread Safe 하다는 것입니다. Actor 사용하는 이유Actor는 앞서 얘기한것처럼 Thread Safe 합니다. 설명은 간단합니다, 여러 스레드들이 하나의 Heap 메모리에 동시에 접근하게 되면 Data Race가 발생할 수 있고 심하면 앱이 crash 되어 불능상태가 될 수 있는데 Thread Safe는 이처럼 여러 스레드들이 하나의 Heap 메모리에 동시 접근을 못하도록 방지해주는 것입니다.Actor 선언하는 방법선언하는 ..
Value Type, Reference Type, Stack, Heap, Struct, Class 사용되는 상황들, @StateObject 가 클래스여야 하는 이유
·
SwiftUI
Value TypeStruct, Enum, String, etc.Stack 메모리에 저장됨빠름Tread Safe인스턴스를 할당할 때 참조가 아닌 새로운 데이터를 만들어낸다 Reference TypeClass, Function, ActorHeap 메모리에 저장됨더 느리지만 동기화됐다Not Tread Safe인스턴스를 할당할 때 참조할 수 있는 타입으로 제공 StackValue Type 저장각각의 스레드마다 고유의 Stack이 존재 HeapReference Type 을 저장Thread 들끼리 공유됩니다. StructValues 에 기반수정될 수 있음Stack 메모리에 저장됨 ClassReferences 에 기반 (인스턴스)Heap에 저장됨클래스끼리 상속가능 Actor클래스와 같지만 thread safe 사용..
ytw_developer
'SwiftUI' 카테고리의 글 목록 (9 Page)