BlocksKit工具包的使用

BlocksKit工具包的使用

一、为什么要使用BlocksKit

 

BlocksKit是一个block的大杂烩,它给Fundation和UIKit框架里很多的类都做了扩展,可以通过调用相关类的扩展的方法简单的实现一下几个功能:

1.block入事件理函数

2.动态代理,block想要实现的方法。

3.在很多基上增加外的方法

block可以帮助我们组织独立的代,并提高复用性和可性。BlocksKit可以很简单的实现block,实现回调,和通信,可以大大减少工作量。

 

二、如何下载和使用

 

1. 下载:在浏览器输入 https://github.com/zwaldowski/BlocksKit这个连接,进入下面这个页面:

 

2.点击上图右下角下载最新的master版本的BlocksKit包。

 

3.下载下来的文件结构如下图:


下载下来的是一个静态库工程文件。官方文档中描述需要自己编译成静态库文件,才能添加到自己的工程中。不过我这里,按照文档指示操作,编译成功了,并没有找到提到的头文件夹,所以我就没有通过添加静态库的方式使用这个框架。我是把BlocksKit那个文件夹里除了BlocksKit-Info.plist外的所有文件添加到工程的新建的BlocksKit文件夹中,然后对里面的.h文件稍作修改,就可以直接使用了。

 

4.修改.h文件

比如BlocksKit.h文件里的内容如下:

#import <BlocksKit/NSArray+BlocksKit.h>

#import <BlocksKit/NSDictionary+BlocksKit.h>

#import <BlocksKit/NSIndexSet+BlocksKit.h>

#import <BlocksKit/NSInvocation+BlocksKit.h>

#import <BlocksKit/NSMutableArray+BlocksKit.h>

#import <BlocksKit/NSMutableDictionary+BlocksKit.h>

#import <BlocksKit/NSMutableIndexSet+BlocksKit.h>

#import <BlocksKit/NSMutableOrderedSet+BlocksKit.h>

#import <BlocksKit/NSMutableSet+BlocksKit.h>

#import <BlocksKit/NSObject+BKAssociatedObjects.h>

#import <BlocksKit/NSObject+BKBlockExecution.h>

#import <BlocksKit/NSObject+BKBlockObservation.h>

#import <BlocksKit/NSOrderedSet+BlocksKit.h>

#import <BlocksKit/NSSet+BlocksKit.h>

#import <BlocksKit/NSTimer+BlocksKit.h>

#import <BlocksKit/BKMacros.h>

 

这样直接使用,会报错,说头文件找不到,原因是不是导入静态库的方式使用,使用<>所以编译器会到系统的类库里去找,系统类库当然会找不到第三方的类库,所以只需要将上面导入头文件的方式改成,以下的内容:

 

#import "NSArray+BlocksKit.h"

#import "NSDictionary+BlocksKit.h"

#import "NSIndexSet+BlocksKit.h"

#import "NSInvocation+BlocksKit.h"

#import "NSMutableArray+BlocksKit.h"

#import "NSMutableDictionary+BlocksKit.h"

#import "NSMutableIndexSet+BlocksKit.h"

#import "NSMutableOrderedSet+BlocksKit.h"

#import "NSMutableSet+BlocksKit.h"

#import "NSObject+BKAssociatedObjects.h"

#import "NSObject+BKBlockExecution.h"

#import "NSObject+BKBlockObservation.h"

#import "NSOrderedSet+BlocksKit.h"

#import "NSSet+BlocksKit.h"

#import "NSTimer+BlocksKit.h"

#import "BKMacros.h"

其他几个头文件也以相同的方式修改即可。

 

5.在工程中使用

做好上面的步骤之后,在代码中使用就更简单了,使用之前导入相应的头文件

Foundation框架:#import "BlocksKit.h"

UIKit框架:#import "BlocksKit+UIKit.h"

QuickLook框架:#import" BlocksKit+QuickLook.h"

MessageUI框架:#import " BlocksKit+MessageUI.h"

然后根据自己的需要调用相关类的扩展方法即可。

 

三、demo源码:利用BlocksKit快速遍历数组,并对数组中的每个元素进行想要的操作,BlocksKit使用起来很简单也很方便,除了demo里面演示的少量的用法,其实还有很多block的使用,比如只需要一句代码就可以给视图添加手势及手势点击事件等,在这里不一一列出,在BlocksKit的相应的头文件的公开方法都有很详细的注释;

#import "ViewController.h"

#import "BlocksKit.h"

#import "QLViewController.h"

#import "BlocksKit+UIKit.h"

 

@interface ViewController ()

{

    NSArray*arr;

}

 

@end

 

@implementationViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    //Do any additional setup after loading the view, typically from a nib.

    NSMutableArray*array = [NSMutableArrayarray];

    for (int i=0; i <10000; i++) {

       [array addObject:[NSStringstringWithFormat:@"%d",i]];

    }

   

    arr =array;

   

    UIButton*button = [UIButtonbuttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(40, 200, 100, 30);

    button.backgroundColor =[UIColorblueColor];

    //button添加点击事件

    [button bk_addEventHandler:^(id sender){

        //拼接字符串

        [self map];

    } forControlEvents:UIControlEventTouchUpInside];

    [self.viewaddSubview:button];

   

}

 

- (void)map

{

    //对原来的数组对象操作,返回一个新的数组,

   arr = [arrbk_map:^id(id obj) {

       return [obj stringByAppendingString:@".png"];

   }];

}

 

 

- (IBAction)asyncEnumAction:(id)sender {

    //快速遍历,无序

    [arr bk_apply:^(id obj) {

//        NSLog(@"元素%d", [obj intValue]);

        NSLog(@"%@", obj);

    }];

}

 

- (IBAction)syncEnumAciton:(id)sender {

    //有序遍历

    [arr bk_each:^(id obj) {

//        NSLog(@"元素%d", [obj intValue]);

        NSLog(@"%@", obj);

    }];

}

 

- (IBAction)presentQuickLookVC:(id)sender {

    QLPreviewController *quickLookVC = [[QLPreviewControlleralloc]init];

    [self presentViewController:quickLookVCanimated:NOcompletion:nil];

}

 

 

@end

 

运行结果:

拼接之前:

2014-12-15 15:52:59.416NSArray-BlocksKit[27290:177611] 9990

2014-12-15 15:52:59.434NSArray-BlocksKit[27290:177605] 9992

2014-12-15 15:52:59.434NSArray-BlocksKit[27290:177610] 9993

2014-12-15 15:52:59.434NSArray-BlocksKit[27290:177611] 9994

2014-12-15 15:52:59.434NSArray-BlocksKit[27290:177605] 9995

2014-12-15 15:52:59.434NSArray-BlocksKit[27290:177610] 9996

 

 

拼接之后:

2014-12-15 15:55:29.671NSArray-BlocksKit[27290:177350] 39.png

2014-12-15 15:55:29.671NSArray-BlocksKit[27290:177350] 40.png

2014-12-15 15:55:29.672NSArray-BlocksKit[27290:177350] 41.png

2014-12-15 15:55:29.672NSArray-BlocksKit[27290:177350] 42.png

2014-12-15 15:55:29.672NSArray-BlocksKit[27290:177350] 43.png

 

四、总结

BlocksKit使用简单方便,这几天除了研究它的使用之外,对其他的第三方框架也有了解,比如UMeng的应用数据分析,MBProgressHUD进度条的使用,以及如何使用QuickLook快速浏览应用中不同格式的文件等。越往下,感觉需要学习的东西越多。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值