关于 iOS 开发中 Lock 的超详细分析

前言

关于 Lock 的使用,最早接触的要数 @sysnc

NSLock

@interface NSLock : NSObject  {
@private
    void *_priv; // 私有的成员变量  _priv
}
@protocol NSLocking

- (void)lock; // 上锁
- (void)unlock; // 解锁

@end
- (BOOL)tryLock; // 尝试加锁
- (BOOL)lockBeforeDate:(NSDate *)limit; // 某个时间之前加锁
// 名字
@property (nullable, copy) NSString *name API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));

关于 NSLock 的代码就这么多,是不是有点意外呢,这么强大的类,只暴露了这点代码出来。

NSConditionLock

@interface NSConditionLock : NSObject  {
@private
    void *_priv; // 私有的成员变量 _priv
}
// 指定初始化方法
- (instancetype)initWithCondition:(NSInteger)condition NS_DESIGNATED_INITIALIZER;
// 只读,
@property (readonly) NSInteger condition;
// 加锁当 condition
- (void)lockWhenCondition:(NSInteger)condition;
- (BOOL)tryLock; // 尝试加锁
- (BOOL)tryLockWhenCondition:(NSInteger)condition; // 尝试加锁当 condition
- (BOOL)lockBeforeDate:(NSDate *)limit; // limit 时间之前加锁
- (BOOL)lockWhenCondition:(NSInteger)condition beforeDate:(NSDate *)limit; // 时间和 condition 加锁
// 名字
@property (nullable, copy) NSString *name API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));

关于 NSConditionLock 暴露出的代码就这么多。

NSRecursiveLock

@interface NSRecursiveLock : NSObject  {
@private
    void *_priv; // 私有成员变量 _priv
}
- (BOOL)tryLock; // 尝试加锁
- (BOOL)lockBeforeDate:(NSDate *)limit; // limit 时间之前加锁

由于最近较忙,待续...

你可能感兴趣的:(关于 iOS 开发中 Lock 的超详细分析)