我試圖通過使用unlockWithCondition(使用NSConditionLock)來繞過NSLock,但無論我得到相同的結果:iOS SDK - NSLock消息:「從未鎖定的線程解鎖」
*斷開_NSLockError()進行調試。 * - [NSLock unlock]:lock('(null)')從未鎖定的線程解鎖。
我不確定是否it's不好,但什麼I'm這樣做是這樣的:
new Thread:
[lockA lock];//waiting unlock
[lockB lock];//waiting unlock
..shared code..
[lockA unlock];
[lockB unlock];
in Main Thread:
//Do two HTTP request.
//when request respond, I unlock the locks in respective threads with [lockA unlock];
[lockB unlock];
所以部分 「..shared代碼..」 可以執行。我不明白爲什麼我會得到這個錯誤。
任何人都可以解釋我做錯了什麼?它看起來應該是完美的。
有來自洛卡/ B在另一個線程調用? – 2012-03-01 16:56:08
如果你在'_NSLockError()'上放置了一個斷點,它會給你一個堆棧跟蹤,顯示出現非法解鎖的位置。你嘗試過嗎? – user1118321 2012-03-01 18:31:36
是的,我解析了請求在新線程上的響應。 – ZiggyST 2012-03-01 20:44:29