반응형
약간 react의 redux에서 subscribe 같은 느낌을 받았습니다.
미리 NotificationCenter에 특정 이벤트를 지정해두고 이에 맞는 이벤트가 발생하면 그를 수행할 수 있게 해줍니다.
예시
A viewController에서 알림을 등록하고
B ViewController에서 알림을 구독하면
이벤트가 발생했을때 B에서 이를 인식해 selector가 실행됩니다.
알림(이벤트) 등록
NotificationCenter.default.post(
// 센터에서 사용할 이름
name: NSNotification.Name("이벤트 이름"),
// 전달할 객체
object: 이벤트에서 사용할 객체라고 보면 된다.,
// 연관되어 넘겨줄 값 dictionary
userInfo: ["키": 값]
)
알림(이벤트) 구독
// viewDidLoad 등록 또는 함수화해서 등록하기
NotificationCenter.default.addObserver(
// 옵저버로 등록할 것
self,
// 이벤트 발생시 실행될 함수
selector: #selector(실행될함수(_:)),
// 지정해둔 이벤트 이름
name: NSNotification.Name("이벤트 이름"),
// 옵저버에게 이벤트 알림을 보내는 개체 지정
// nil로 설정시 그냥 이벤트 발생시 호출
object: nil
)
// #selector는 원하는 동작을 @objc로 작성
추가 관리
구독을 계속 유지하면 불필요한 리소스가 사용될 수 있음으로 deinit에서 구독을 해제해 줍시다.
deinit {
NotificationCenter.default.removeObserver(self)
}
반응형
'iOS > Swift' 카테고리의 다른 글
[iOS] iOS HTTP 통신 허용 방법 (0) | 2022.02.09 |
---|---|
[IOS] UICollectionView 기본 사용 (0) | 2022.02.07 |
[IOS] UserDefaults 로컬 저장소에 저장 및 불러오기 (0) | 2022.02.03 |
[Swift] error 종류 만들기와 catch (0) | 2022.01.31 |
[Swift]난수 생성과 범위 설정 (0) | 2022.01.30 |