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