我遇到了对 XML 文件的读取和写入操作(由两个不同的线程和两个不同的视图控制器完成)重叠的情况。
我尝试了以下逻辑以将相同的 NSLock 与两个视图控制器一起使用:
视图控制器一:
(on a background thread using dispatch_async)
- (void)writeToXML {
// get xmlLock (lock declared globally)
// write
// unlock
}
视图控制器二:
(on the main thread)
- (void)readFromXML {
// get xmlLock (lock referenced from ControllerOne)
// read
// unlock
}
但是,在调试时,我注意到即使 ControllerOne 锁定了 xmlLock,ControllerTwo 仍然能够获取它。
我在这里想念什么?另外,有没有更好的方法来做这样的事情?