本篇文章主要介绍了"BlocksKit初见:一个支持将delegate转换成block的Cocoa库",主要涉及到github,Dictionary方面的内容,对于移动开发感兴趣的同学可以参考一下:
简介项目主页: https://github.com/zwaldowski/BlocksKitBlocksKit 是一个开源的框架,对 Cocoa 进行了扩展,...
简介
- 项目主页: https://github.com/zwaldowski/BlocksKit
BlocksKit 是一个开源的框架,对 Cocoa 进行了扩展,将许多需要通过 delegate 调用的方法转换成了 block。在很多情况下,blocks 比 delegate 要方便简单,因为 block 是紧凑的,可以使代码简洁,提高代码可读性,另外 block 还可以进行异步处理。使用 block 要注意避免循环引用。
目录结构
BlocksKit 的所有方法都以bk_
开头,这样可以方便地列出所有 BlocksKit 的所有方法。BlocksKit 主要目录结构
- Core:存放 Foundation 相关的 Block category,如 NSObject、NSTimer、NSarray、NSDictionary、NSSet、NSIndexSet、NSMutableArray等
- DynamicDelegate:动态代理(消息转发机制)
- UIKit:扩展了 UIAlertView,UIActionView,UIButton 等
最常用的是 UIKit Category,它为 UIAlertView,UIActionSheet,UIButton,UITapGestureRecognizer 等提供了 blocks。
用法实例
UIAlertView 和 UIActionSheet 用法示例:
UIAlertView *alertView = [[UIAlertView alloc] bk_initWithTitle:@"提示" message:@"提示信息"];
[alertView bk_setCancelButtonWithTitle:@"取消" handler:nil];
[alertView bk_addButtonWithTitle:@"确定" handler:nil];
[alertView bk_setDidDismissBlock:^(UIAlertView *alert, NSInteger index) {
if (index == 1) {
NSLog(@"%ld clicked",index);
}
}];
[alertView show];
[[UIActionSheet bk_actionSheetCustomWithTitle:nil buttonTitles:@[@"查看", @"退出"] destructiveTitle:nil cancelTitle:@"取消" andDidDismissBlock:^(UIActionSheet *sheet, NSInteger index) {
}] showInView:self.view];
UIButton 和 UITapGestureRecognizer 用法示例: