반응형
NotificationCenter
- NotificationCenter는 등록된 Observer에게 정보를 broadcast해주는 역할을 수행합니다.
- addObserver(_:selector:name:object:) 혹은 addObserver(forName:object:queue:using:) 메서드를 통해 알림(NSNotification 객체)을 받을 객체를 등록할 수 있습니다. 이 때 어떤 알림을 받아야하는지도 지정합니다. 따라서 하나의 객체에 이 메서드를 여러번 호출하는 것으로 여러 알림에 대한 Observer 역할을 하나의 객체가 동시에 수행하도록 할 수 있습니다.
- 실행중인 각 앱마다 default notification center가 존재하며, 필요할 경우 새로운 notification center를 만들 수도 있습니다.
- notification center는 단일 프로그램 내에서만 알림을 전달할 수 있습니다. 다른 프로세스에 알림을 전달하거나 받기위해서는 DistributedNotificationCenter이라는 것을 사용해야합니다.
동작 방식
- 특정 객체에서 Notification 내부의 Event를 발생시키면 등록된 Observer들에 Event가 전달되면서 그에 대한 행동을 취하도록 설계되어 있습니다.
- 따라서 하나의 객체에서 여러 객체로 동시에 이벤트를 전달할 때 유용하게 사용할 수 있습니다.
NSNotification
- 알림의 내용을 포함하는 객체입니다. 해당 객체를 Observer에게 내보내는 것으로 정보를 전달합니다.
- 내부적으로 name, object, userInfo를 포함하고 있습니다.
addObserver method
- 해당 메서드를 통해 새로운 observer를 추가할 수 있습니다.
forName name
: 알림의 이름입니다. 이를 통해 알림을 식별하게 됩니다. nil일 경우 알림을 확인할 때 이름을 판별기준으로 삼지 않습니다.object obj
: 알림의 발신자입니다. 설정할 경우 이 발신자에서 온 알림만 확인 가능해집니다. nil일 경우 알림을 확인할 때 발신자를 판별기준으로 삼지 않습니다.queue
: 알림을 받고 block이 실행될 operation queue입니다. nil일 경우 현 스레드에서 동기적으로 처리됩니다.using block
: 알림이 왔을 때 실행될 block입니다. notification center는 이를 copy합니다. copy된 block은 observer 등록이 사라지기 전까지 유지됩니다.
observer
: observer로 등록할 객체입니다.selector aSelector
: observer가 알림을 보내면 수행할 내용을name aName
: 알림의 이름입니다. 이를 통해 알림을 식별하게 됩니다. nil일 경우 알림을 확인할 때 이름을 판별기준으로 삼지 않습니다.anObject
: 알림의 발신자입니다. 설정할 경우 이 발신자에서 온 알림만 확인 가능해집니다. nil일 경우 알림을 확인할 때 발신자를 판별기준으로 삼지 않습니다.
post method
- 해당 메서드를 통해 알림을 보낼 수 있습니다.
aName
: 알림의 이름anObject
: 알림의 발신자aUserInfo
: user의 정보를 담는 dictionary. 알림에 대한 추가정보를 넣습니다.
참고
반응형
'🍎 Apple > Swift' 카테고리의 다른 글
[Swift] Localizing (NSLocalizedString) (5) | 2022.04.10 |
---|---|
[Swift] Generic (0) | 2022.03.07 |
[Swift] KVC(Key-Value Coding), KVO(Key-Value Observing) (0) | 2022.03.01 |
[Swift] Monad (0) | 2022.03.01 |
[Swift] Property Wrapper (0) | 2022.02.24 |