반응형
예) 라디오는 주파수로 구분하지만, 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 해제 (메모리 낭비를 방지)
반응형
'개발언어 > Swift' 카테고리의 다른 글
스위프트 위치 권한 (0) | 2022.09.04 |
---|---|
스위프트 delegate 예제 (0) | 2022.01.24 |
스위프트 viewWillAppear()와 viewDidLoad()란? (0) | 2022.01.16 |
스위프트 UIAlertController 사용법 (알림) (0) | 2022.01.15 |
스위프트 화면 전환 옵션 (show, showDetail, present Modally 등) (0) | 2022.01.14 |