gpt4 book ai didi

iphone - NSFileManager:继续在后台写入磁盘吗?

转载 作者:行者123 更新时间:2023-12-03 19:08:16 27 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我使用默认的 NSFileManager 来复制和移动一些数据。数据量可能有几 MB,因此可能需要几秒钟才能完成复制。如果用户现在启动复制过程并退出应用程序,我可以继续以后台模式写入磁盘吗?如果是这样,怎么办?我不想开始新的复制过程,只想完成正在运行的复制过程。

我目前使用两种方法调用:

[imageData writeToFile:path atomically:YES];

[fm copyItemAtPath:sourcePath toPath:destinationPath error:&error];

这两个调用都包装在另一个方法中,并通过-performSelectorInBackground:withObject:在后台执行。 .

另一个问题是我是否可以获得有关写入操作进度或至少是否已完成的任何信息?

编辑:更多信息:目前,我根本没有执行任何后台任务。当用户按下主页按钮时,正在运行的磁盘操作会发生什么?它们只是被切断并且文件不完整吗?下次开始可以继续写吗?它们是否被取消并且不完整的文件被删除?

总而言之:我正在将数据写入磁盘,并且希望当用户在写入操作期间按下主页按钮时数据保持一致。我该如何实现这一目标?

最佳答案

默认情况下,当用户按下主页按钮时,您的应用程序并未真正完成。因此,只要不会花太长时间,它就应该完成该任务。如果需要很长时间那么请看一下这个问题:How to implement Task completion

有一件事:我认为您对 PerformSelectorInBackground:withObject: 的真正作用感到困惑。“...我继续以后台模式写入磁盘”中使用的背景和“”中的背景 PerformSelectorIn 背景 :withObject: "背景不一样

前背景:是指您的应用程序对用户不可见,但仍在运行,至少在一段时间内。 (当用户按两次主页按钮并切换到另一个应用程序时)

后一个背景:指后台线程,与主线程相反。

在这种情况下,如果您使用或不使用performSelectorInBackground:withObject:,它将不会影响您的应用程序是否可以执行后台模式。这是完全不同的事情

您可以在 [fm copyItemAtPath:ToPath:error:]; 之后设置 BOOL finish = YES;并将其保存在 NSUserDefaults 中,并在您的应用程序再次进入前台时检查该标志;)

希望有帮助;)

关于iphone - NSFileManager:继续在后台写入磁盘吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com