본문 바로가기

728x90

난 iOS개발자/Combine

(3)
eraseToAnyPublisher eraseToAnyPublisher는 Publisher프로토콜을 구현하는 타입에서 호출, 해당 Publisher의 타입을 숨기고 AnyPublisher 타입으로 변환합니다. 이 변환을 통해 Publisher의 구체적인 타입정보를 숨기고 API설계 단순화에 도움이됩니다. 예 func fetchData(url: URL) -> AnyPublisher { URLSession.shared.dataTaskPublisher(for: url) .map { $0.data } .eraseToAnyPublisher() } fetchData함수는 URL을 인수로 받아 데이터를 요청하고 결과를 반환하는 역할입니다. API요청을 수행하고 map연산자를 사용하여 데이터만 추출합니다. 그리고 eraseToAnyPublisher메서드..
Combine 변환연산자 Combine에서 우리는 퍼블리셔로부터 오는 값에 대한 연산을 수행하는 메소드를 " `operator` "라고 부릅니다. 각 결합 연산자는 게시자를 반환합니다. 일반적으로 게시자는 업스트림 이벤트를 수신하여 조작한 다음 조작된 이벤트 다운스트림을 소비자에게 보냅니다. collect() collect연산자의 publisher는 개별 값 스트림을 단일 배열로 변환하는 편리한 방법을 제공한다. 마블 다이어그램은 작업자가 작동하는 방식을 시각화하는 데 도움이 된다. 맨 윗줄은 업스트림 게시자, 상자는 연산자를 나타낸다. 그리고 마지막은 구독, 구체적으로는 업스트림 게시자로부터 오는 값을 조작한 후 구독자가 받게된다. example(of: "collect") { ["A", "B", "C", "D", "E"].pu..
Combine01 개요 Combine 프레임워크는 지정된 이벤트 소스에 대해 단일 처리 체인을 만들 수 있다. 체인의 각 부분은 이전 단계에서 받은 요소에 대해 고유한 작업을 수행하는 결합 연산자이다. 비동기 프로그래밍 begin var name = "Tom" print(name) name += " Harding" print(name) end -> 단일 스레드에서 실행되므로 결과가 항상 같음 --- Thread 1 --- begin var name = "Tom" print(name) --- Thread 2 --- name = "Billy Bob" --- Thread 1 --- name += " Harding" print(name) end -> 어떤 스레드가 먼저 실행될지 모르며 결과가 매번 달라질 수 있다. 애플의 비동기 프로..

728x90