Это плохой тон для синхронизации NSUserDefaults в - (void) dealloc?

Я загружаю из 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. :)

7
задан Kenny Winker 14 November 2010 в 00:12
поделиться