NSUserDefaults の変更通知を受け取る
NSUserDefaults
には NSUserDefaultsDidChangeNotification
という通知が用意されていて変更通知を受け取る事ができる。
この通知は userInfo
が nil になっていて、何が変更されたのか変更の詳細を知る事ができない。
NSUserDefaults
の何のキーが変更されたかを知りたい場合には KVO を使う。
Notification と違って KVO では observer として登録する際に変更通知を受ける keyPath を事前に知っている必要があるが、NSKeyValueObservingOptionNew
NSKeyValueObservingOptionOld
オプションによって変更前後の値を取得する事ができるなど細かい制御が可能。