Я загружаю из NSUserDefaults в методе инициализации моего объекта. Могу ли я сохранить в NSUserDefaults в методе dealloc моего объекта?
Примерно так:
-(void)dealloc {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.filenamesArray forKey:self.defaultsKey];
[userDefaults synchronize];
self.filenamesArray = nil;
self.defaultsKey = nil;
[super dealloc];
}
хорошо, плохо, хорошо? если не хорошо, то где лучше.
Edit:
Спасибо за подробные ответы. Все это имеет смысл. Другая причина, по которой я обнаружил, почему это плохое место для сохранения пользовательских значений по умолчанию, заключается в том, что dealloc вызывается только тогда, когда объект удачно освобождается. Если мое приложение убито, этот код никогда не запустится. Точно так же, если приложение переведено в фоновый режим (iOS 4), оно не запускается.
Я также удалил явный вызов [userDefaults synchronize]
. Это заставляет меня немного нервничать, но я полностью доверяю Apple. :)