앱내에 저장되는 데이터로, 앱이 꺼져도 저장되기를 원하는 값이나 로컬 알림 설정 여부 등의 사용자 설정 값을 앱내에 저장할 수 있도록 하는 객체
싱글톤 객체로 설계되어, 여러 쓰레드에서 이에 접근해서 값을 쓰려고 한다면 동시성 문제 발생, → UserDefaults에서는 알아서 lock을 해서 thread safe하게 동작함
직접 접근하지 않고, UserDefaults.standard
를 이용해서 접근. 직접 접근하면 내용이 손실되고, 변경 반영이 안되고 충돌됨.
UserDefaults는 인메모리 형식이어서, UserDefaults에 저장 후 메모리와 저장소 값을 일치시키기 위해서는 synchronize() 함수를 불러주어야 한다.
참고 문서