NSLock是iOS里的线程锁,对于临界资源互斥访问时非常有用。
但是有个问题必须要注意,NSLock上锁和释放锁这两个操作务必要在同一个线程里,否则会会出错。比如线程A先调用lock操作,接着由线程B调用unlock操作,那么必定会出现如下错误:
[NSLock unlock]: lock (<NSLock: 0xxxxxxxxxxxxx>) '(null)' unlocked from thread which did not lock it
这个不属于致命错误,并不会导致程序强退。如果你的程序出现了这个错误,那么就要好好检查代码了。