2013-11-28 27 views

回答

2

与其检查完成情况,您可以使用辅助文件强制写入原子。

如果您使用支持辅助文件的API(类似于[NSString writeToFile:... atomically:YES encoding:... error:...])编写文档,则更改与翻转开关一样容易。

如果您自己正在编写该文件,请首先使用不同名称写入文件,关闭该文件,然后将其重命名为所需的名称。

例如,在将文档写入@"myfile.doc"的调用中,您可以将文档写入@"myfile.doc_aux",然后将其重命名为@"myfile.doc"。如果第二个线程在写入完成之前检查是否存在@"myfile.doc",则检查将失败。但是,如果检查成功,您可以确定该文件已写入完成。

2

您不想检查它是否被其他线程使用,因为其他线程可以在您检查后立即开始使用它。

而是,你想要的是一个锁或同步点。看看@synchronized()和NSLock,两者都可以帮助您确保多线程时的数据完整性。

相关问题