美文网首页
iOS-block总结

iOS-block总结

作者: CDLOG | 来源:发表于2018-07-24 22:46 被阅读15次

    block回调-传值

    其实就是block作为参数
    传值方:类的.h有block属性,类的.m有block调用(传值,其实就是给block属性传递参数),相当于调用代理方法,
    捕获方(回调):调用该类的block属性,写自己的代码,就和代理在此时重写方法一样

    保存代码,需要时直接调用

     void(^block)() = ^{
            NSLog(@"调用block");
        };
    block();
    

    书写方式

    //属性方式
    @property (strong,nonatomic) modalBlock modalB;
    //替换方式
    typedef void(^haveNet) (BOOL isNet);
    typedef void(^block 名) (参数类型 参数名);
    +(instancetype)initWithBlock:(modalBlock)block;
    //传值方式
    if (self.modalB) {
            self.modalB(@"666");
        }
    //方法调用
    +(instancetype)initWithBlock:(modalBlock)block{
          ModalViewController *modalVC= [[ModalViewController alloc]init];
         modalVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
        if (modalVC) {
           ** modalVC.modalB = block;**
        }
        return modalVC;
    }
    
    //调用方式,给block赋值(就是给回调返回值)
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        NSLog(@"333");
        if (self.modalB) {
            self.modalB(@"666");
        }
        if (self.textB) {
            self.textB(@"777");
        }
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    
    //回调
    VC.textB = ^(NSString *text) {
            NSLog(@"%@",text);
        };
    

    内存管理

    MRC:属性使用copy
    ARC:属性使用strong

    block作为函数参数

    // 怎么区分参数是block,就看有没有^,只要有^.把block当做参数
    // 把block当做参数,并不是马上就调用Block,什么时候调用,由方法内部决定
    // 什么时候需要把block当做参数去使用:做的事情由外界决定,但是什么时候做由内部决定.
    //就像是代理

    block作为函数返回值

    函数式响应式编程思想

    相关文章

      网友评论

          本文标题:iOS-block总结

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