Notification Center
1. <무언가 액션이 있었을때> 이 액션이 진행되었으니 담당자들은 처리바람.
2. 담당자 수신 완료, 처리하겠음
1. Post -> 이 액션이 진행되었으니 담당자들은 처리바람
NotificationCenter.default.post(name: .doItSomeThing, object: nil)
포스트 -> name에 해당하는 자들에게 각자 일을 수행하라고 시키는 것
doItSomeThing은 name에 해당(동작하라는 게 아님)
name: 일처리하는 스텝의 이름
스탭마다 일거리는 다르다.
- 일거리와 이름 세팅하기
@objc func printSomeThing(_ notification: Notification){
print(“do it something”)
}
하는 일은 프린트 해주는 것뿐이고 포인트는 파라미터 타입이 Notification
2. Observer -> 담당자 수신완료, 처리하겠음
Observer : 관찰자, 여기선 일하는 스텝(담당자)
//담당자 인적사항 및 업무추가
NotificationCenter.default.addObserver(self, selector: #selector(printSomeThing(_:)), name: .doItSomeThing, object: nil)
addObserver : 관찰자를 대기시키겠다는 것
selector : 스텝 업무
name: 스텝 이름
여기서 가장 중요한건 이름
1. Post 메소드가 name에 “누구씨 일해!!” 라고 한다면,
3. 그 이름에 해당 되는 스텝들이 각자 등록된 업무 (= selector) 수행하게 된다. -> 이 코드에선 .doItSomeTing을 부르면 아까 만든 함수(print 한줄짜리)를 실행하게 된다.
! 스텝 이름은 중복 가능 addObserver를 작성해도 이미 사용한 이름을 쓸수 있지만, 최종 이 아닌 해당이름이 모두 실행됨
+ name 등록방식 (2가지)
1. addObserver 할때 한번에
// Post
NotificationCenter.default.post(name: Notification.Name("doItSomeThing"), object: nil)
// Add Observer
NotificationCenter.default.addObserver(self, selector: #selector(printSomeThing(_:)), name: Notification.Name("doItSomeThing"), object: nil)
-> 이렇게 doItSomeThing이라는 Notification.Name 데이터 타입을 만들 수도 있지만 재사용도 힘들고 코드도 지저분
2. Extension으로 프로퍼티 추가
'모바일앱 > iOS' 카테고리의 다른 글
링크에 한글이 있는 경우 (0) | 2022.01.13 |
---|---|
로그아웃구현 - push와 present 그리고 NotificationCenter, View의 생명주기 (0) | 2022.01.12 |
autologin (0) | 2022.01.10 |
강제업데이트의 로직 (0) | 2022.01.08 |
(뷰의 이동) push와 present (0) | 2022.01.06 |
(뷰의 이동) Segue를 연결하는 3가지 방법 (0) | 2022.01.05 |
접근제한자 private fileprivate internal public open (0) | 2022.01.05 |
싱글턴 프로그래밍 디자인 패턴 (0) | 2021.12.24 |