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 |