読者です 読者をやめる 読者になる 読者になる

ObjecTips

基本Objective-Cで iOS とか OS X とか

NSUserDefaults の変更通知を受け取る

NSUserDefaults には NSUserDefaultsDidChangeNotification という通知が用意されていて変更通知を受け取る事ができる。

この通知は userInfonil になっていて、何が変更されたのか変更の詳細を知る事ができない。

NSUserDefaults の何のキーが変更されたかを知りたい場合には KVO を使う。

Notification と違って KVO では observer として登録する際に変更通知を受ける keyPath を事前に知っている必要があるが、NSKeyValueObservingOptionNew NSKeyValueObservingOptionOld オプションによって変更前後の値を取得する事ができるなど細かい制御が可能。