当nscoding writeToFile正在保存且用户关闭应用程序时,iOS中会发生什么情况?

当nscoding writeToFile正在保存且用户关闭应用程序时,iOS中会发生什么情况?,ios,objective-c,sync,nscoding,nskeyedarchiver,Ios,Objective C,Sync,Nscoding,Nskeyedarchiver,当nscoding writeToFile正在保存且用户关闭应用程序时,iOS中会发生什么情况 NSData *d = [NSKeyedArchiver archivedDataWithRootObject:self]; [d writeToFile:FILE_PATH atomically:YES]; 例如,假设有100 MB的用户数据要保存—这可能需要一段时间(NSData writeToFile非常慢)—因此,如果用户关闭应用程序,写入过程是否不会完成,并且您不会同步数据

当nscoding writeToFile正在保存且用户关闭应用程序时,iOS中会发生什么情况

    NSData *d = [NSKeyedArchiver archivedDataWithRootObject:self];
    [d writeToFile:FILE_PATH atomically:YES];
例如,假设有100 MB的用户数据要保存—这可能需要一段时间(NSData writeToFile非常慢)—因此,如果用户关闭应用程序,写入过程是否不会完成,并且您不会同步数据


如果是这样的话,有没有办法防止用户在保存完应用程序之前关闭应用程序?

简单地说,make可以自动确保所有文件都已写入或没有写入

非原子允许写入和切断部分文件

如果由于某种原因,应用程序在写入整个文件之前终止,并且您正在以原子方式使用,则该文件将不会写入存储器。进程将被终止


如果文件太大,我建议启动某种加载屏幕,告诉用户不要关闭应用程序,完成后隐藏加载屏幕,让他们知道可以关闭应用程序。

当你按下home按钮时,应用程序将成为后台应用程序。它关不上。操作系统可以在内存不足的情况下休眠后台应用程序。这就是人们使用核心数据的原因吗?因为如果用户尝试关闭应用程序,数据在本地保存的概率更高?人们使用核心数据是因为它通过应用程序更新和版本工作(以及其他几个原因)。这是一个更健壮的系统,但实现起来更复杂。