-2

オブザーバーを登録するための次のコードがあります。

// This logs some value
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"]); 
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleNotifications:)
                                             name:SomeNotification
                                           object:nil];

- (void) handleNotifications: (NSNotification *)notification
{
  // This logs null
  NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"]); 
}

myKey通知セレクターでnullを返すのはなぜですか?

編集

セレクターに値が存在しない場合に新しい値を保存しようとしていますが、アプリを再起動すると、セレクターに常にnullが返されるように見えます。

- (void) handleNotifications: (NSNotification *)notification
{

  if (![[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"])) {
    NSLog(@"Saving");
    [[NSUserDefaults standardUserDefaults] setObject: @"ABC", forKey:@"myKey"]
    [[NSUserDefaults standardUserDefaults] synchronize];
  }
}
4

1 に答える 1

0

簡単に言うと、が呼び出されてが返される時点でstandardUserDefaults、キーの にオブジェクトが格納されていないことは明らかです。@"myKey"-handleNotifications:[[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"]nil

以外の通知を処理SomeNotificationしてい-handleNotifications:ますか? その場合-handleNotifications:、列の前に入場している可能性があります

// This logs some value
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"]); 
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleNotifications:)
                                             name:SomeNotification
                                           object:nil];

実行する。

于 2012-12-29T19:18:22.227 に答える