我试图通过使用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