[swift] Observable과 Observer의 역할 및 사용 방법

Swift에서 Observable과 Observer는 애플리케이션의 데이터 흐름을 관리하는 데 사용되는 중요한 개념입니다. Observable은 데이터의 변경 사항을 감지하고, Observer는 이러한 변경 사항에 대한 반응을 정의합니다. 이러한 개념은 주로 reactive programming이나 프런트엔드 개발에 자주 활용됩니다. 이번 글에서는 Observable과 Observer의 역할과 사용 방법에 대해 살펴보겠습니다.

Observable의 역할

Observable은 데이터의 변경 사항을 감지하고, 이를 Observer에게 전달하는 역할을 수행합니다. 데이터의 변경 사항은 주로 Observable이 관찰하는 속성(property)이나 이벤트(event)에 따라 발생합니다. Observable은 변경 사항을 Observer에게 알리기 위해 특정 메서드를 호출하거나 이벤트를 발행하는 등의 방식을 사용합니다.

Observer의 역할

Observer는 Observable로부터 전달받은 데이터의 변경 사항에 대한 반응을 정의하고 수행합니다. Observer는 Observable에 등록되어 있으며, Observable로부터 변경 알림을 받으면 지정된 동작을 수행합니다. 이를 통해 상태 변화에 대한 적절한 동작을 수행하거나 화면을 업데이트하는 등의 작업을 할 수 있습니다.

Observable과 Observer의 사용 방법

Swift에서 Observable과 Observer를 사용하기 위해 RxSwift, Combine, 또는 NotificationCenter 등의 라이브러리를 활용할 수 있습니다. 이러한 라이브러리는 각각의 방식으로 Observable과 Observer 패턴을 구현하고 있으며, 사용 방법도 조금씩 다를 수 있습니다. 다음은 NotificationCenter를 사용한 예시입니다.

// 데이터 변경을 감지할 Observable 객체 생성
let myObservable = NotificationCenter.default.publisher(for: .myNotification)

// Observer 등록
let observer = NotificationCenter.default.addObserver(forName: .myNotification, object: nil, queue: nil) { notification in
    // 변경 사항에 대한 반응을 정의하는 로직 수행
    print("Notification received: \(notification.userInfo)")
}

// Observable에서 변경 사항 발생
NotificationCenter.default.post(name: .myNotification, object: nil, userInfo: ["key": "value"])

// Observer 제거
NotificationCenter.default.removeObserver(observer)

위의 예시에서는 NotificationCenter를 사용하여 Observable과 Observer를 구현하였습니다. Observable인 myObservable 객체는 .myNotification 이벤트를 감지하고, Observer는 해당 이벤트에 대한 반응을 정의하고 있습니다. .post 메서드를 사용하여 myObservable에서 변경 사항을 발생시킬 수 있으며, removeObserver를 사용하여 Observer를 제거할 수 있습니다.

이와 같은 방식으로 Observable과 Observer를 구현하여 애플리케이션의 데이터 흐름을 간편하게 관리할 수 있습니다.

참고 자료