Notificaton Center란 등록된 event가 발생하면 등록된 observer에 정보를 알리는 역할을 한다
앱에서 발생한 Notifications들이 default notification center로 전달된다. 따로 notifications들을 만들지 않는다면 Notification.default로 사용하면 된다.
따로 내 소유의 notification center를 만들어 알림을 전송할 수도 있다.
notification이 notification 센터로 전송되면, notification center는 등록된 observers list들을 관찰하는데 이 과정에서 앱의 속도가 늦어질 가능성이 있다.
하나 이상의 notification center를 기능적으로 만들면, notification이 전송될 때 더 적은 시간이 걸릴 수 있고, 앱의 성능을 향상시킬 수 있다.
NotificationCenter.default.addObserver(_ observer: Any,
selector aSelector: Selector,
name aName: NSNotification.Name?,
object anObject: Any?)
default Notification center의 observer list에 등록하는 메서드이다.
Notification.default: 클래스 내에서 전역으로 만들 수 있는 알림 변수로, 따로 Notification center를 작성하지 않는 경우 사용하면 된다.
observer: 등록할 object
Selector: 알림이 발생할 경우, 실행할 함수를 @objc 형태로 작성.
name: Notification의 key로 unique해야하며, 알림을 식별하는 태그이다.
Object: 발송자가 오브젝트에 보내려하는 객체. 어떠한 형태로 전달 할 수 있다.(Bool,string,Dictionary,Array,Int,Nil)
Name의 Notification들에게 Notification을 시작하도록 명령하는 것과 유사.
NotificationCenter.default.post(name aName: NSNotification.Name,
object anObject: Any?)
name: notification의 이름
object: notification에게 전달할 객체
observer를 등록할 때 사용할 @ojbc 함수 작성.
@objc func selector(_ :){
//code
//
NotificationCenter.default.addObserver(_ observer: Any,
selector aSelector: Selector,
name aName: NSNotification.Name?,
object anObject: Any?)
NotificationCenter.default.post(name aName: NSNotification.Name,
object anObject: Any?)
NotificatioCenter에 등록된 Observer를 삭제할 필요가 있을 때 실행.
func removeObserver(_ observer: Any,
name aName: NSNotification.Name?,
object anObject: Any?)
출처 : https://developer.apple.com/documentation/foundation/notificationcenter
https://medium.com/@nimjea/notificationcenter-in-swift-104b31f59772