반응형

예) 라디오는 주파수로 구분하지만, notification은 주파수로 구분한다.

 

방법

1. notification 이름 설정

2. broadcast (음.. 간단히 말하면 방송을 때려버림! 그럼 방송을 듣고 있던 observer가 그 방송을 듣고 알림 전달하는거라고 생각됨.)

3. observer(관찰자)로 관찰을 하고 있다가 broadcast가 오면 notification전달

 

notification

// notification
extension ComposeViewController {
	//notification 이름 선언
    static let newMemoDidInsert = Notification.Name(rawValue: "newMemoDidInsert")
	//
}

broadcasting 

//notification 이름 전달 
NotificationCenter.default.post(name:ComposeViewController.newMemoDidInsert, object:nil)

observer

//2.옵저버해제 
var token:NSObjectProtocol?

//3.옵저버해제 
deinit {
	if let token = token {
    	NotificationCenter.default.removeObserver(token)
    }
}


//1.옵저버를 실행할 코드는 주로 한번만 실행되면 되기때문에, 주로 viewDidLoad에서 구현
override func viewDidLoad() {
	super.vi ewDidLoad()
    
    //파라미터 : (notification 이름 등록, nil, UI를 메인쓰레드에서 업데이트 하기위해 OperationQueue.main 사용, 클로저 전달 )
    //notification이 전달되면, 4번째 파라미터의 클로저가 3번째 파라미터의 쓰레드에서 실행됨.
    token = NotificationCenter.default.addObserver(ComposeViewController.newMemoDidInsert, object:nil, queue:OperationQueue.main) { [weak self] (noti) in
    //tableView 다시 로드
    self?.tableView.reloadData()
}

observer 해제 (메모리 낭비를 방지)

 

 

반응형

+ Recent posts