【发布时间】:2023-03-22 17:28:01
【问题描述】:
在我的 iPhone 应用程序中,我使用默认的 NSFileManager 来复制和移动一些数据。数据量可能为几 MB,因此可能需要几秒钟才能完成复制。如果用户现在开始复制过程并退出应用程序,我可以继续以后台模式写入磁盘吗?如果是这样,怎么做?我不想开始新的复制过程,而只想完成正在运行的复制过程。
我目前使用两种方法调用:
[imageData writeToFile:path atomically:YES];
和
[fm copyItemAtPath:sourcePath toPath:destinationPath error:&error];
两个调用都包装在另一个方法中,并通过-performSelectorInBackground:withObject:在后台执行。
另一个问题是,我能否获得有关写入操作进展到何种程度或至少是否已经完成的任何信息?
编辑:更多信息: 目前,我根本没有执行任何后台任务。当用户按下主页按钮时,运行磁盘操作会发生什么?他们只是被切断并且文件不完整吗?我可以在下一个开始继续写吗?它们是否被取消并删除了不完整的文件?
总结一下:我正在将数据写入磁盘,并且我希望它在用户在写入操作期间按下主页按钮时保持一致。我如何实现这一目标?
【问题讨论】:
标签: iphone multithreading cocoa-touch background nsfilemanager