C++ 已打开文件上的removeItemAtPath
我在iPhone上打开了一个文件,通过网络发送数据(使用“\u open”打开)。不过,我有能力从iphone界面删除文件。这是使用NSFileManager的removeItemAtPath完成的 奇怪的是,即使文件当前处于打开状态,removeItemAtPath仍然成功 文件在网络上完全传输,并且在传输完成之前removeItemAtPath成功。那么removeItemAtPath是否执行延迟删除?ie如果该文件正在使用,是否将其排队以备将来使用?如果是这样,那么就没有问题了 如果不是。。。有人知道如何让NSFileManager报告它没有执行删除操作的事实吗C++ 已打开文件上的removeItemAtPath,c++,iphone,objective-c,nsfilemanager,C++,Iphone,Objective C,Nsfilemanager,我在iPhone上打开了一个文件,通过网络发送数据(使用“\u open”打开)。不过,我有能力从iphone界面删除文件。这是使用NSFileManager的removeItemAtPath完成的 奇怪的是,即使文件当前处于打开状态,removeItemAtPath仍然成功 文件在网络上完全传输,并且在传输完成之前removeItemAtPath成功。那么removeItemAtPath是否执行延迟删除?ie如果该文件正在使用,是否将其排队以备将来使用?如果是这样,那么就没有问题了 如果不是。
谢谢 根据 :
shouldremovietematpath
如果操作应该继续,则返回YES,而不一定它已经成功删除了该项。有趣的是,文档中还指出:
讨论此方法返回否将导致NSFileManager停止删除该项目。如果该项是目录,则也不会删除该项的子项
这让我相信这是一个异步操作,不应该使用此方法的返回值来确定文件是否已成功删除。我的猜测是,它将对象排队等待删除,当文件不再使用时将被删除。猜测一下就可以了。我需要知道。顺便说一句,我没有实现shouldRemoveItemAtPath。同样,没有什么可以阻止它保持完全同步。我不明白这意味着什么程度的异步性……我认为这只是一个猜测。这是苹果官方的文档。如果成功删除的返回值为YES,或不成功删除的返回值为NO,则它将声明。不过,它告诉我们的是,该方法的最佳猜测是删除将继续。文件只是被删除,而不是立即删除。传输完成后,如果我再次尝试传输文件,它会在iPhone上返回“不存在”。分类。