我的目标是能够更新 NSUserDefaults 中的对象。
这是我的方法,我担心的是,当我使用 removeObjectForKey 替换数组时,是否存在无法创建的内存问题。数组中的对象通过 initWithArray: 保存在 objectArray 中。 oldSavedArray 是包含 NSUserDefaults 先前内容的数组。
objectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
if ([objectArray containsObject:myObject]){
// remove the current object
[objectArray removeObject:_currentFood];
// reset our new array of objects
[_defaults removeObjectForKey:@"mySavedData"];
[_defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:objectArray] forKey:@"mySavedData"];
}
else{
// add the current object
[objectArray addObject:_currentFood];
// reset our new array of favorite food
[_defaults removeObjectForKey:@"mySavedData"];
[_defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:objectArray] forKey:@"mySaveData"];
}
最佳答案
回答你的问题
Is there any memory issue by using "removeObjectForKey"?.
我的回答是否定的。但这一步不是必需的。
[defaults setObject:forKey:]
足够了。
关于iphone - 从 NSUserDefaults 中删除数组时出现内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746558/