我遇到了一個情況,即對XML文件的讀寫操作(由兩個不同的線程和兩個不同的視圖控制器完成)重疊。對兩個視圖控制器使用相同的NSLock
我嘗試以下邏輯來使用相同的NSLock與兩個視圖控制器:
ViewControllerOne:
(on a background thread using dispatch_async)
- (void)writeToXML {
// get xmlLock (lock declared globally)
// write
// unlock
}
ViewControllerTwo:
(on the main thread)
- (void)readFromXML {
// get xmlLock (lock referenced from ControllerOne)
// read
// unlock
}
然而,在調試,我注意到即使ControllerOne鎖定了xm lock,ControllerTwo仍然能夠得到它。
我在這裏錯過了什麼?另外,有沒有更好的方法來做這樣的事情?
你的鎖在哪裏申報?你可以添加代碼嗎?並在哪裏分配和製作.. –
我已經在ControllerOne的.h文件中聲明瞭myLock,然後在init方法中初始化它,然後從writeToXML方法調用[myLock lock]。 – Myxtic