OS X 10.8 にはバグがあるらしく、 NSUserDefaults
の removePersistentDomainForName:
を呼んでも defaults が削除されない。また、 setPersistentDomain:forName
で空の辞書をセットしても何も起こらない:
// これはダメ
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[NSBundle mainBundle].bundleIdentifier];
// これもダメ
[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{} forName:[NSBundle mainBundle].bundleIdentifier];
唯一の手段は、空でない適当な辞書を defaults にセットし、値を取り除く方法である:
// これが正解
[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{@"": @""} forName:[NSBundle mainBundle].bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@""];