Bibi's DevLog 🤓🍎

Notification, NotificationCenter 본문

📱🍎 iOS/🍏 Apple Developer Documentation

Notification, NotificationCenter

비비 bibi 2022. 4. 10. 22:44

220410

NotificationCenter

Notification

https://developer.apple.com/documentation/foundation/notification

: notification center를 통해 등록된 모든 옵저버들에게 발송되는 정보를 담기 위한 컨테이너.

  • init(name: Notification.Name, object: Any?, userInfo: [AnyHashable : Any]?)](https://developer.apple.com/documentation/foundation/notification/2451466-init))
    • name : notification을 식별하는 태그. (Notification.Name)
      • extension으로 Notification.Name 프로퍼티를 추가하는 것이 좋다 - static let으로
    • object : notification을 보내는 쪽(poster)에서 옵저버에게 보내려는 객체. Notification.object를 활용해 정보를 보내면,
    • userInfo : notification에 연관된 값이나 객체를 담는 저장소.

NotificationCenter

https://developer.apple.com/documentation/foundation/notificationcenter

: 등록된 옵저버들에게 정보를 발송할 수 있도록 하는 알림 발송(notification dispatch) 매커니즘.

  • 동기적으로 동작한다

    • notification 발송 시, 모든 observer를 처리할 때까지 대기
  • post : NotificationCenter에 주어진 notification을 보내거나, 주어진 정보로 notification을 만들어 보내는 메서드.

    • name에 해당하는 옵저버들에게 일을 수행하라고 시킨다.
    • post(Notification)
    • post(name:object:userInfo:)
    • post(name:object:)
  • addObserver : 옵저버를 등록함

    • Adds an entry to the notification center
    • addObserver(forName:object:queue:using:)
    • addObserver(_:selector:name:object:)