BlocksKit

作者: 居然是村长 | 来源:发表于2016-03-29 22:16 被阅读6420次

    开源地址: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

    相关文章

      网友评论

      • 云中demon:楼主你好,请问一下,BlocksKit里面的UIKit相关block 在block里面直接用self 不会引起循环引用吗?
        83445de57a78:@云中demon 可以用@WeakObj啊
        云中demon:@说了是村长 好吧,谢谢楼主回复!
        居然是村长:@云中demon 表示不喜欢用blickkit,之前用与其他库有冲突。实际用处不大。另,会导致循环引用。

      本文标题:BlocksKit

      本文链接:https://www.haomeiwen.com/subject/dmpslttx.html