2016-01-08 2 views
0

мне нужно сохранить данные NSUserDefaults несколько раз в различных методов в одном классе, и каждый раз, когда мне нужно, чтобы инициализировать его следующим образом:Может NSUserDefaults быть инициализирован только один раз для всего класса

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

Можно ли инициализировать его только один раз?

Например, объявите его как свойство, а затем инициализируйте их в - (void) viewDidLoad в UIViewController.

ответ

2

Нет необходимости, так как это singleton pattern так что только один экземпляр поддерживается автоматически NSUserDefaults.

Update после комментариев @NikolaiRuhe (большое спасибо):

Там нет необходимости в NSUserDefaults предоставляет экземпляр по умолчанию, который может быть использован для большинства целей, которые подвергаются методом sharedUserDefaults класса, который вы называете. Это не технически singleton, поскольку вы не вынуждены использовать этот экземпляр по умолчанию. Однако, если вы всегда используете sharedUserDefaults, тогда будет создан только один экземпляр.

Если вы заинтересованы в сохранении ввода, тогда создайте методы в своих классах для выполнения загрузки и сохранения в/из NSUserDefaults; например:

- (void)loadConfig 
{ 
    NSUserDefaults *userDefaults = [NSUserDefaults sharedUserDefaults]; 
    _someObjectProperty = [userDefaults objectForKey:@"someProperty"]; 
    _someIntProperty = [userDefaults integerForKey:@"anotherProperty"]; 
} 
+0

Да, но вы можете сохранить строки кода, инициализируя их только один раз, не так ли? –

+2

@DariusMiliauskas На самом деле нет. Вы можете написать метод удобства для своего класса, который автоматически сохраняет каждое свойство, а затем вызывает этот метод, который сохранит строки и уменьшит ошибки. – trojanfoe

+0

Nitpicking: это не реальный * singleton *, но структура предоставляет общий «стандартный» экземпляр, который хорош для большинства случаев. Однако вы можете создать больше экземпляров для конкретных случаев использования. –

Смежные вопросы