UserDefaults는 쉽게 이야기해서 데이터 저장소이다.
UserDefaults는 앱의 어느 곳에서나 데이터를 쉽게 읽고 저장할 수 있게도와주며 float, double, integer, boolean과 같은 유형에 액세스하기위한 메소드를 제공하고 뿐만아니라 NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary 유형의 객체들도 저장이 가능하다.
UserDefaults는 단일데이터 저장에 용이하며 데이터는 [key, value] 로 저장된다.
UserDefaults는 app을 껐다가 키더라도 저장된 데이터가 유지되나 만약 app을 삭제한다면 모든 데이터가 지워지기 때문에 영구히 유지해야하는 데이터를 저장한다면 UserDefaults는 부적합할 수 있다.
또한 UserDefaults는 저장되는 데이터가 암호화되지 않기 때문에 보안에 취약하기도 하다.
UserDefaults는 싱글톤 객체로서 앱 시작시 인스턴스가 생성되고 이를 공유한다. thread safety(스레드 안정성)를 보장하기 때문에 데이터 동기화 문제를 고려하지 않아도 괜찮다.
UserDefaults는 key-value 쌍으로 데이터가 저장되며 key는 String이고 value는 모든 객체를 담을 수 있다.
UserDefaults에 저장된 값은 덮어쓰지 전엔 변하지 않는데 예를들어 변수 x = 5로 저장 되었다면 이후 x를 변경한들 UserDefaults에 저잗된 x 값은 변경되지 않으며 5를 유지한다. 값을 변경하기 원한다면 변경 후 set을 이용하여 다시한번 UserDefaults에 저장해야한다.