iOS 개발을 하다 보면 객체 간의 소통이 필요할 때가 많습니다.
NotificationCenter는 이런 상황에서 유용하게 사용할 수 있는 이벤트 방송(Broadcast) 시스템입니다.
Post (알림 보내기)
Add Observer (알림 받기 등록)
Remove Observer (옵저버 제거)
extension Notification.Name {
static let didReceiveData = Notification.Name("didReceiveData")
}
NotificationCenter.default.post(
name: .didReceiveData,
object: nil,
userInfo: ["data": "Hello"]
)
NotificationCenter.default.addObserver(
self,
selector: #selector(handleData(_:)),
name: .didReceiveData,
object: nil
)
@objc private func handleData(_ notification: Notification) {
if let data = notification.userInfo?["data"] as? String {
print("받은 데이터: \(data)")
}
}
deinit {
NotificationCenter.default.removeObserver(self)
}
NotificationCenter는 느슨한 결합(Loose Coupling) 을 가능하게 합니다.