[swift] 앱의 설정 변경에 따른 라이프사이클 처리

앱 개발에서 설정 변경은 중요한 요소 중 하나입니다. 사용자가 설정을 변경할 때마다 앱은 적절한 처리를 해야 합니다. 이 글에서는 Swift를 사용하여 앱의 설정 변경에 따른 라이프사이클 처리 방법을 알아보겠습니다.

1. 설정 변경을 감지하는 방법

앱의 설정은 주로 UserDefaults를 사용하여 저장됩니다. 설정 변경을 감지하기 위해서는 UserDefaults에 등록된 옵저버를 활용할 수 있습니다. 다음은 UserDefaultsaddObserver(_:forKeyPath:options:context:) 메서드를 사용하여 설정 변경을 감지하는 방법입니다.

UserDefaults.standard.addObserver(self, forKeyPath: "설정키", options: [.new, .old], context: nil)

위 코드에서 “설정키”에는 설정의 키값을 입력해야 합니다. 이렇게 옵저버를 등록하면 설정 변경 시 observeValue(forKeyPath:of:change:context:) 메서드가 호출됩니다.

2. 설정 변경 처리

observeValue(forKeyPath:of:change:context:) 메서드를 사용하여 설정 변경에 대한 처리를 할 수 있습니다. 메서드의 인자에는 변경된 값과 이전 값이 포함됩니다. 다음은 설정 변경에 따른 처리를 예시로 보여줍니다.

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "설정키" {
        guard let newValue = change?[.newKey] as? Bool else { return }
        
        if newValue {
            // 설정 변경에 따른 처리
        } else {
            // 설정 변경에 따른 처리
        }
    }
}

위 코드에서는 “설정키”의 값이 변경될 때마다 newValue를 확인하고, 변경된 값에 따라 적절한 처리를 수행합니다.

3. 옵저버 제거

설정 변경을 감지하는 옵저버는 더 이상 필요하지 않을 때 제거해야 합니다. 제거하지 않으면 메모리 누수 등의 문제가 발생할 수 있습니다. 다음은 옵저버를 제거하는 방법입니다.

UserDefaults.standard.removeObserver(self, forKeyPath: "설정키")

위 코드에서 “설정키”는 등록할 때와 동일한 설정의 키값을 입력해야 합니다.

4. 참고 자료