2016-04-09 5 views
1

私はこのメソッドで予期しない動作が発生していることに気付き、誰も洞察力を持っているのだろうかと疑問に思っていました。 removeObjectForKeyと呼ぶと、実際には[setObject: obj ForKey: key]が舞台裏で呼び出されていることに気付きました。私はこの方法を上書きしたので問題に遭遇しています(setObject forKeyNSUserDefaultsのために。NSUserDefaults removeObjectForKey

removeObjectForKeyのドキュメントは言う:デフォルトを削除する

は同じキーが検索リストに標準のアプリケーションドメインの前に、ドメイン内に存在する場合objectForKey:メソッドによって返される値に影響を与えません。正確にアプリケーションドメインであり、これはsetObjectと呼ばれている理由だろうか?何

NSUserDefaultsNSDictionaryからオブジェクトを削除しようとしているので混乱しています。

+3

私の推測では、removeObjectForKeyは 'null'でsetObjectForKeyを呼び出すだけです。 – davecom

+0

素晴らしい呼び声!それはたくさんの意味があります。ありがとうございました! – will3321

答えて

2

NSUserDefaultsの場合、setObject:forKeyを上書きしません。本当に悪い考えのようです。価値があるのであれば、setObject:forKeyはおそらく、キーを削除するためにnil値で呼び出されています。