iOS/Swift

[IOS] 이벤트 관찰 NotificationCener

유훈 | Yuhun 2022. 2. 7. 02:17
반응형

APPLE_공식문서

약간 react의 redux에서 subscribe 같은 느낌을 받았습니다.

미리 NotificationCenter에 특정 이벤트를 지정해두고 이에 맞는 이벤트가 발생하면 그를 수행할 수 있게 해줍니다.

 

예시

A viewController에서 알림을 등록하고 

B ViewController에서 알림을 구독하면

이벤트가 발생했을때 B에서 이를 인식해 selector가 실행됩니다.

 

알림(이벤트) 등록

NotificationCenter.default.post(
    // 센터에서 사용할 이름
    name: NSNotification.Name("이벤트 이름"),
    // 전달할 객체
    object: 이벤트에서 사용할 객체라고 보면 된다.,
    // 연관되어 넘겨줄 값 dictionary
    userInfo: ["키": 값]
)

 

알림(이벤트) 구독

// viewDidLoad 등록 또는 함수화해서 등록하기

NotificationCenter.default.addObserver(
        // 옵저버로 등록할 것
        self,
        // 이벤트 발생시 실행될 함수
        selector: #selector(실행될함수(_:)),
        // 지정해둔 이벤트 이름
        name: NSNotification.Name("이벤트 이름"),
        // 옵저버에게 이벤트 알림을 보내는 개체 지정
        // nil로 설정시 그냥 이벤트 발생시 호출
        object: nil
)

// #selector는 원하는 동작을 @objc로 작성

 

추가 관리

구독을 계속 유지하면 불필요한 리소스가 사용될 수 있음으로 deinit에서 구독을 해제해 줍시다.

deinit {
    NotificationCenter.default.removeObserver(self)
}
반응형