NSUserDefaults の整数で奇妙な問題が発生しています。私が開発しているアプリでは、いくつかの写真を削除することができます。ユーザーがそれらを削除すると、NSUserDefaults の整数 (StorageUsed という名前) が減少します。これは、ユーザーが写真を削除したときの私のコードです:
int size = [[json objectForKey:@"size"] intValue];
NSLog(@"photo size: %i",size);
int storageUsed = [[NSUserDefaults standardUserDefaults] integerForKey:@"StorageUsed"];
storageUsed = storageUsed - size;
NSLog(@"storage used: %i",storageUsed);
[[NSUserDefaults standardUserDefaults] setInteger:storageUsed forKey:@"StorageUsed"];
[[NSUserDefaults standardUserDefaults] synchronize];
そして、これは出力です:
2012-08-14 12:00:18.285 My Albums[32875:707] photo size: 116769
2012-08-14 12:00:18.293 My Albums[32875:707] storage used: 952516
2012-08-14 12:00:18.514 My Albums[32875:707] photo size: 117333
2012-08-14 12:00:18.516 My Albums[32875:707] storage used: 952516
2012-08-14 12:00:18.729 My Albums[32875:707] photo size: 120303
2012-08-14 12:00:18.731 My Albums[32875:707] storage used: 952516
2012-08-14 12:00:18.991 My Albums[32875:707] photo size: 137845
2012-08-14 12:00:18.993 My Albums[32875:707] storage used: 952516
...
ご覧のとおり、サイズがゼロでない限り、使用されるストレージは減少していません。
なぜこれが起こっているのか誰でも説明できますか?