この警告メッセージについて多くの質問がありましたが、通常はエラーを示しています。一般的に、この警告をどのようにデバッグする必要があるのだろうか? そして、それはどういう意味ですか?
私はすでにそれを修正する方法を知っているケースを持っています:
NSDictionary *lastUpdatedAt = [NSDictionary dictionaryWithObjectsAndKeys:
@"es", [NSDate distantPast],
@"it", [NSDate distantPast], nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:
[NSDictionary dictionaryWithObjectsAndKeys:
@"es", @"lang",
[NSNumber numberWithInt:0], @"groupedBy",
[NSNumber numberWithBool:FALSE], @"hideKnownWords",
lastUpdatedAt, @"lastUpdatedAt",
nil]];
バグは、lastUpdatedAt を初期化するときに、値があるはずの場所にキーを誤って配置したことです。そして、修正は次のとおりです。
NSDictionary *lastUpdatedAt = [NSDictionary dictionaryWithObjectsAndKeys:
[NSDate distantPast], @"es",
[NSDate distantPast], @"it",nil];
ただし、このバグのあるコードでは、registerDefaults を呼び出す行にブレークポイントを配置すると、ブレークポイントを進めようとするたびに警告が生成されますが、戻りません。バグは実際にはその行にはありません。バギーラインが近くてラッキーだったのですぐに気付きました。しかし、一般的に、この種のバグはどのように追跡されるべきでしょうか?