BlocksKit

开源地址:https://github.com/zwaldowski/BlocksKit

把很多系统的delegate,方法等 翻新成block 了,对与UIKit 类的,还是比较方便使用的。对于喜欢block的可以考虑试试。(注tableView 这样大个的 delegate 还是算了把骚年)

简单举几个比较常用的栗子

UIControl

    [button bk_addEventHandler:^(id sender) {
        // do something
    } forControlEvents:UIControlEventTouchUpInside];

UITextField

    [testField setBk_shouldReturnBlock:^BOOL(UITextField *field) {
        // do something like
        [self.view endEditing:YES];
        return YES;
    }];
// 类似的还有其他几个代理

UIView

    [view bk_whenTapped:^{
        // do something // 直接添加手势,不需要额外代码
    }];
// 类似还有双击等

UIWebView

    [webView bk_setDidFinishWithErrorBlock:^(UIWebView *webView, NSError *error) {
        // do something with error
    }];
// 类似还有其他代理

KVO

注:remove 对应出现

  • 1 生成indentify
    // 生成的 是 用于移除观察的 indentify
    NSString *token = [self.label bk_addObserverForKeyPath:@"text" options:NSKeyValueObservingOptionNew task:^(id obj, NSDictionary *change) {
        NSLog(@"%@",change);
        NSLog(@"%@",obj);
    }];
    // 移除上面添加的
    [self.label bk_removeObserversWithIdentifier:token];
    
    
  • 2 直接写indentify,使用感觉比较方便,indentify 可以与通知一样写个 常量。
    [self.label bk_addObserverForKeyPath:@"test" identifier:@"indentfy" options:NSKeyValueObservingOptionNew task:^(id obj, NSDictionary *change) {
        // do something
    }];
    [self.label bk_removeObserversWithIdentifier:@"indentify"];
    
  • 3 根据参数不同有另外几个

NSTimer

    [NSTimer bk_scheduledTimerWithTimeInterval:1 block:^(NSTimer *timer) {
        // do
        NSLog(@"1");
    } repeats:YES];

NSObject (延迟处理)

  [self bk_performBlock:^(id obj) {
      //do (其实就是 GCD after 方法)
      NSLog(@"1");
      
  } onQueue:dispatch_get_global_queue(0, 0) afterDelay:2];

其他的 对数据类型进行 block,感觉很少用。

其他动态block ...

1

你可能感兴趣的:(BlocksKit)