美文网首页
Block的用法

Block的用法

作者: 不是谁的李逍遥 | 来源:发表于2020-09-09 11:49 被阅读0次

    1.block作为属性

    写法1:typedef声明block名称

    typedef id(^Block_Name)(id arg1, id arg2);
    @property (nonatomic, copy) Block_Name block;
    

    写法2:直接书写

    @property (nonatomic, copy) id(^Block_Name)(id arg1, id arg2);
    

    2.block作为参数

    写法:

    - (void)method:(id(^)(id arg1,id arg2))argBlock;
    

    3.block作为返回值

    - (void (^)())walk;
    //实现
    - (void(^)())walk{
        return ^(){
            NSLog(@"走起");
        };
    }
    

    block作为返回值可以实现简单的链式编程

    - (Person *(^)(int))eat;
    - (Person *(^)(int))sleep;
    
    //实现
    - (Person *(^)(int))eat{
        return ^(int dun){
            NSLog(@"吃了%d顿",dun);
            return self;
        };
    }
    
    - (Person *(^)(int))sleep{
        return ^(int minute){
            NSLog(@"又睡了%d分钟",minute);
            return self;
        };
    }
    

    通过上面的写法,person可以无限的调用eat以及sleep方法,因为这2个方法返回的都是person类本身,还可以传入block的参数,我们还可以通过这个用法来修改对应类的变量,使之写起来有种链式的感觉,调用后:

    Person *person = [Person new];
    person.eat(10).sleep(20).eat(30).sleep(100);
    

    相关文章

      网友评论

          本文标题:Block的用法

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