YYKit/UtilityiOS 常见问题汇总

YYThreadSafeArray和YYThreadSafeDi

2017-09-29  本文已影响130人  _阿南_
图片来之网络

NSArray和NSDictionary是非线程安全的,所以YY添加了YYThreadSageArray和YYThreadSafeDictionary来添加一个锁,保证线程安全。

实现

采用了两个宏来添加信号量并发控制:
初始化和信号量创建宏:

#define INIT(...) self = super.init; \
if (!self) return nil; \
__VA_ARGS__; \
if (!_arr) return nil; \
_lock = dispatch_semaphore_create(1); \
return self;

添加信号量等待和信号量发送宏:

#define LOCK(...) dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); \
__VA_ARGS__; \
dispatch_semaphore_signal(_lock);

一共使用的函数有:

NSArray及NSMutableArray需要重载保证线程安全的方法

初始化方法

实例方法

可变数组的实例方法

协议方法

NSDictionary及NSMutableDictionary需要重载保证线程安全的方法

初始化方法

实例方法

可变字典

协议方法

收获

了解到了NSArray和NSDictionary很多一直没有用到过的方法。学习到了NSIndexSet的用法,之前从来不会用到这个方法。都是自己编写逻辑写一遍。

// END

上一篇 下一篇

猜你喜欢

热点阅读