NotificationCenter 설명서 자습서(SwiftUI Foundation 중국어 안내서)

NotificationCenter


통지 분배 메커니즘은 정보를 등록된 관찰자에게 방송할 수 있다.
class NotificationCenter : NSObject

총람하다


객체는 공지 센터에 등록되어 NSNotification 사용 또는 방법으로 공지(객체)를 받습니다.대상이 자신을 관찰자로 추가할 때, 대상은 받을 알림을 지정합니다.따라서 대상은 여러 번 이 방법을 사용해서 서로 다른 통지의 관찰자로 등록할 수 있다.addObserver(_:selector:name:object:)addObserver(forName:object:queue:using:)
실행 중인 모든 응용 프로그램에는default 알림 센터가 있습니다. 새로운 알림 센터를 만들어서 특정한 위아래 문장의 통신을 구성할 수 있습니다.
알림 센터는 단일 프로그램에서만 알림을 전달할 수 있다.다른 프로세스에 알림을 보내거나 다른 프로세스에서 알림을 받으려면 바꾸십시오.DistributedNotificationCenter

메시지


기본 알림 센터 가져오기


1、class var default : NotificationCenter
이 프로그램의 기본 알림 센터입니다.

관찰자 추가 및 삭제


2、func addObserver(forName: NSNotification.Name?, object: Any?, queue: OperationQueue?, using: (Notification) -> Void) -> NSObjectProtocol
제공된 블록에 대한 알림을 수신하기 위해 알림 센터에 항목을 추가합니다.
3、func addObserver(Any, selector: Selector, name: NSNotification.Name?, object: Any?)
제공된 선택기를 호출하기 위해 알림 센터에 항목을 추가합니다.
4、func removeObserver(Any, name: NSNotification.Name?, object: Any?)
알림 센터의 스케줄러에서 일치하는 항목을 삭제합니다.
5、func removeObserver(Any)
알림 센터의 발표에서 지정한 관찰자의 항목을 삭제합니다.

알림 게시


6、func post(Notification)
지정된 공지를 공지 센터에 게시합니다.
7、func post(name: NSNotification.Name, object: Any?, userInfo: [AnyHashable : Any]?)
지정한 이름, 발송자, 정보가 있는 알림을 만들고 알림 센터에 발표합니다.
8、func post(name: NSNotification.Name, object: Any?)
지정한 이름과 발송자가 있는 알림을 만들고 알림 센터에 발표합니다.

Publishing Notifications to Combine


9、func publisher(for: Notification.Name, object: AnyObject?) -> NotificationCenter.Publisher
알림을 방송할 때 이벤트를 보낸 게시자를 되돌려줍니다.
10、struct NotificationCenter.Publisher
알림을 방송할 때 원소를 보내는 게시자.

실전 코드

  NotificationCenter.default.addObserver(forName: NSWindow.didBecomeMainNotification, object: nil, queue: nil) { (notification) in
         print("here")
            }
        }
class MsgMgr:NSObject{
    func sendNoti(msg:String){
        NotificationCenter.default.post(name: NSNotification.Name.Msg, object: msg)
    }
    
}

extension Notification.Name {
    static let Msg = Notification.Name("Msg_demo")
}

class MsgModel:ObservableObject{
    @Published var name = ""
    
    @objc func updateUI(notification: Notification) {
         //let url = notification.userInfo?[URLContainer.urlKey]
         print("")
        self.name = notification.object as! String
     }
    func addNoti(){
        NotificationCenter.default.addObserver(self,
                                               selector: #selector( self.updateUI( notification:)),
                   name: Notification.Name.Msg,
                   object: nil)
    }
}

기술 교류


QQ: 3365059189 SwiftUI 기술 교류 QQ 팜: 518696470

좋은 웹페이지 즐겨찾기