LoginSignup
2
1

More than 5 years have passed since last update.

NSUserDefaultsの変更通知を受信する

Posted at

UserDefaultsに保存した値を取得しTableViewを更新しようと下記のようなコードを書きました。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSUserDefaults standardUserDefaults] addObserver:self
                                            forKeyPath:@"Key"
                                              options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
                                               context:NULL];
}

- (void)dealloc {
    [[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:@"Key"];
}

- (void)observeValueForKeyPath:(NSString *) keyPath ofObject:(id) object change:(NSDictionary *) change context:(void *) context
{
    if ([keyPath isEqualToString:@"Key"]) {
         //Do something
        [ self.tableView reloadData ];
    }
}

そしたら、UserDefaultsに変更をすると、2回通知が来てしまいました。しかも、なぜか初回はそもそもの通知が来ない。。Developer Forum等をみると、iOS9の頃にバグレポートがあり、すでに修正されたとあるのですが、ググってみると同じように同様の問題が発生するというのがありました。

とりあえず、今回は別の方法を使ってやってみようと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1