Синхронизация пользовательских настроек по умолчанию в -dealloc ничем не отличается от других.Это потому, что, как ни странно, -dealloc никоим образом не волшебен и, в отличие от, скажем, деструкторов C ++, -dealloc на самом деле является типичным методом.Вы могли бы немного больше беспокоиться о передаче self.filenamesArray в userDefualts, потому что это на самом деле то, что может удерживаться после фактического освобождения, но я верю, что пользовательские значения по умолчанию сохранит его.
Относительно того, когда вам нужно [userDefaults synchronize];
, люди меняются, и я лично не согласен с @Joshua - я никогда не синхронизирую явно, а просто позволяю NSUserDefaults позаботиться об этом.Если я не очень ошибаюсь, он запускается автоматически при закрытии приложения, а также периодически в противном случае.Поскольку он знает, когда он был обновлен, и ему нужно записать весь plist-файл сразу, я думаю, что я бы предпочел, чтобы алгоритмы Apple обрабатывали время написания значений по умолчанию, поскольку это занимает нетривиальное время (потому что этопишет в файловую систему).
(обратите внимание, что ни один из последних абзацев не применим, если у вас есть особые обстоятельства, связанные с настройками по умолчанию вашего пользователя, например, другое приложение, читающее / записывающее их)