EasyBlock
功能
- 将所有的 UIControlEvent 事件改由 Block 处理,无需再写 target-action
- 将所有的手势事件改由 Block 处理
- 简易封装了 GCD 的异步处理各种队列的接口,可以更简单地使用 GCD 带来的高效率线程处理
- 在 EasyGCD 的头文件中增加了 dispatch_semaphore_t 所设置的锁,可以更简单地处理临界资源的互斥,具有非常优秀的性能,仅次于 OSSpinLock(自旋锁)
- 处理开发中经常遇到的多个请求回来时再做某些操作的问题,使用一个由 dispatch_semaphore_t 封装的 EasymultipleTaskLock 来处理这种场景
最近更新
- 0.1.4
增加可忽略时间,防止按钮或其他事件在一段时间内重复次数太多所造成的 Bug
使用方式
- 针对于 UIKit
[self.btnOne addEvent:UIControlEventTouchUpInside handleBlock:^(id instance) {
NSLog(@"%@被点击了2",instance);
}];
[self.view addGestureRecognizer:[UITapGestureRecognizer new] handleBlock:^(id instance) {
NSLog(@"%@",instance);
}];
- 针对 GCD 封装的 API
// 获得一个锁对象,上锁与解锁
dispatch_semaphore_t lock = easyGetLock();
easyLock(lock);
easyUnLock(lock);
// 针对多任务的 easyGetMultipleTaskLock
dispatch_semaphore_t lock = easyGetMultipleTaskLock();
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), easyCGDGetConcurrentQueue(NULL), ^{
NSLog(@"任务一完成");
easyMultipleTaskUnlock(lock);
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), easyCGDGetConcurrentQueue(NULL), ^{
NSLog(@"任务二完成");
easyMultipleTaskUnlock(lock);
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), easyCGDGetConcurrentQueue(NULL), ^{
NSLog(@"任务三完成");
easyMultipleTaskUnlock(lock);
});
// 第二个参数输入锁的数量
easyMultipleTaskLockCount(lock, 3, ^{
NSLog(@"任务全部完成");
});
支持 Cocoapods
pod 'EasyBlock'
- 如果您无法使用 pod search 命令找到它,请执行以下命令更新您的 CocoaPods 官方索引库
pod repo update
联系我
可以将发现的问题或有好的建议告诉我,邮箱: [email protected]
可以直接在此提 Issues 与 pull
License
EasyBlock 可在 MIT 许可证下使用。更多信息请查阅 LICENSE 文件。