[swift] SwiftEventBus를 사용하여 다른 모듈 간의 통신은 어떻게 이루어지는가?

SwiftEventBus는 Swift로 작성된 모듈 간의 이벤트 기반 통신을 쉽게 구현할 수 있는 라이브러리입니다. 이 라이브러리를 사용하면 다른 모듈 간에 직접적인 의존성을 만들지 않고도 이벤트를 전달하고 수신할 수 있습니다.

먼저, SwiftEventBus를 프로젝트에 추가해야 합니다. CocoaPods나 Carthage를 통해 SwiftEventBus를 설치할 수 있습니다. 이후에는 다음과 같이 SwiftEventBus를 사용하여 다른 모듈 간의 통신을 할 수 있습니다.

// 이벤트 발생
SwiftEventBus.post("event_name", sender: self, userInfo: ["key": "value"])

// 이벤트 수신
SwiftEventBus.onMainThread(target, name: "event_name") { result in
    // 이벤트 처리 코드 작성
    if let userInfo = result?.userInfo as? [String: Any] {
        let value = userInfo["key"]
        // 이벤트 처리 내용
    }
}

// 이벤트 제거
SwiftEventBus.unregister(target)

위의 예제 코드에서는 event_name이라는 이벤트를 발생시키고, 해당 이벤트를 수신할 때 실제로 수행할 작업을 클로저로 정의하였습니다. userInfo 파라미터를 통해 이벤트와 함께 전달할 데이터를 추가할 수 있습니다.

프로젝트의 다른 모듈에서는 같은 이벤트를 수신하기 위해 onMainThread 메서드를 사용하여 이벤트를 등록하고, 이벤트를 처리하는 클로저를 정의합니다. 이후, 해당 이벤트가 발생하면 클로저가 호출되어 작업이 수행됩니다.

타겟 모듈에서 이벤트 수신을 더 이상 필요하지 않을 경우, unregister 메서드를 사용하여 등록된 이벤트를 제거할 수 있습니다.

SwiftEventBus를 사용하면 모듈 간의 강력한 통신을 구현할 수 있으며, 코드의 결합도를 낮추고 유연성을 높일 수 있습니다.

참고 자료