在使用NSLock
或NSRecursiveLock
代替@synchronized
语法糖时,您可以实现的目标.它提供的关键功能是tryLock
方法:
NSRecursiveLock *lock = [[NSRecursiveLock alloc] init]; [lock lock]; @try { // ... do synchronized stuff } @finally { [lock unlock]; } if ([lock tryLock]) { @try { // do synchronized stuff if possible } @finally { [lock unlock]; } }