Предположим, у вас есть локальное свойство с именем NSArray *myArray
в файле singleton's .m
, где хранятся все необходимые данные. Все, что вам нужно сделать, это добавить метод в заголовочный файл, который возвращает этот массив, если он не nil
, а в случае nil
сделать его перезагрузкой из хранилища и возврата. Также переопределите метод - (void)didReceiveMemoryWarning
и сохраните данные в случае предупреждения о памяти.
Вот пример кода, написанного на Objective-C:
//Singleton.h file
- (NSArray *)storedData;
//Singleton.m file
@property NSArray *myArray;
...
- (NSArray *)storedData
{
if (_myArray == nil)
_myArray = [self fetchMyArrayFromLocalStorage];
return _myArray;
}
- (NSArray *)fetchMyArrayFromLocalStorage
{
//Some code to fetch data from local storage
}
- (void)saveMyArrayToLocalStorage
{
//Code to save _myArray to local storage
}
- (void)didReceiveMemoryWarning
{
[self saveMyArrayToLocalStorage];
_myArray = nil; //Remove array if is needed
[super didReceiveMemoryWarning];
}
Теперь вы всегда будете получать необходимые данные, необходимые, просто вызвав метод:
[[mySingleton sharedInstance] storedData]
Спасибо за ваш ответ! Таким образом, если данные, хранящиеся в singleton, удаляются с помощью уменьшения памяти, единственный способ снова получить эти данные, чтобы снова получить локальный db. –