我正在开发一个应用程序,用于保存有关CoreData和singleton类中登录用户的信息。在用户登录后,我从coredata中获取数据并从单例中设置变量。
我的问题:
如果应用程序收到内存警告问题,并且将释放来自单例的数据,我的应用程序将崩溃。在这种情况下我该怎么办?
谢谢!
答案 0 :(得分:1)
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
默认情况下,您的ViewController将拥有此方法,在您的应用程序崩溃之前,此方法将自动执行,您应该在此方法中编写一些代码,以确保您的数据可以保存在设备中,然后释放它。
答案 1 :(得分:1)
我们假设您在单身的NSArray *myArray
文件中有一个名为.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]