본문 바로가기
Swift

NotificationCenter

by JDeoks 2023. 7. 7.

NotificationCenter

NotificationCenter는 앱 내에서 발생하는 이벤트에 대한 알림을 관리하는 클래스이다.

알림을 관찰하고 해당 알림에 대한 처리를 수행하는 객체인 Observer를 등록해서 알림을 받을 수 있다.

애플리케이션 내의 모든 객체는 NotificationCenter 싱글톤 인스턴스를 사용하여 알림을 관찰하고 발송한다.

default 정적 프로퍼티를 통해 싱글톤 인스턴스에 접근할 수 있다.

let center = NotificationCenter.default

Observer

아래의 메소드로 NotificationCenter에 옵저버를 등록할 수 있다.

addObserver(_:selector:name:object:)

func addObserver(
    _ observer: Any,
    selector aSelector: Selector,
    name aName: NSNotification.Name?,
    object anObject: Any?
)

 

observer: 알림을 받도록 등록할 옵저버 객체 ex) ViewController
selector: 알림이 발생할 때 호출될 메소드,  Objective-C의 런타임에 의해 호출되기 때문에 @objc 어트리뷰트 추가해야함, NSNotification 객체를 매개변수로 받아 처리함
name: 관찰하려는 알림의 이름. 알림 이름은 시스템에서 제공하는 상수 또는 사용자가 정의한 알림 이름일 수 있습니다.
object: 알림을 발송한 객체. nil로 지정하면 모든 객체로부터의 알림을 수신함

 

NSNotification

이벤트나 데이터를 전달하기 위한 메시지

open class NSNotification : NSObject, NSCopying, NSCoding {

    open var name: NSNotification.Name { get }
    open var object: Any? { get }
    open var userInfo: [AnyHashable : Any]? { get }
    
    @available(iOS 4.0, *)
    public init(name: NSNotification.Name, object: Any?, userInfo: [AnyHashable : Any]? = nil)

    public init?(coder: NSCoder)
}

name: 알림의 이름을 나타내는 NSNotification.Name 타입의 프로퍼티

object: 알림을 보낸 객체를 나타내는 Any? 타입의 프로퍼티, 보낸 객체가 없을 때는 nil로 설정 가능

userInfo: 추가데이터를 지정하는 딕셔너리

 

 

'Swift' 카테고리의 다른 글

키보드에 가려지는 텍스트 필드 이동시키기  (0) 2023.07.12
SnapKit  (0) 2023.07.12
UITableViewDataSource  (0) 2023.07.06
뷰 컨트롤러 간의 통신  (0) 2023.07.06
네비게이션 바가 스토리보드상에서 보이지 않을 때  (0) 2023.07.01