final class UserSettingManager: UserSettingManageable, @unchecked Sendable, ObservableObject {
@Published var userData: UserData
private let userDataStorage: Persistable
// MARK: Init method
init(userDataStorage: Persistable) {
self.userDataStorage = userDataStorage
self.fetch()
}
기존에는 위와 같이 클래스 객체 생성 시, userData 주입 없이도 기본 값을 초기화하고 init 메서드를 통해 초기화하고 있다.
이때 클래스 초기화 시, 저장프로퍼티가 초기화 → init() 와 같은 순서로 초기화가 진행되어 아래의 문제가 발생한다.
이때 toggle 버튼 상태가 바뀌면서 사용자가 토글버튼을 누르지 않아도 onChange 의 클로저가 실행되어 문제를 일으켰다.
https://medium.com/@r1verfuture/swift-unusernotificationcenter-2-c6d15739c8d9