美文网首页
Block 用法小结

Block 用法小结

作者: 喜欢五月天的仙外仙 | 来源:发表于2017-02-20 14:45 被阅读0次

    1.Block的定义格式

    返回值类型(^block变量名)(形参列表) = ^(形参列表) {};调用Block保存的代码block变量名(实参);

    void (^printBlock)() = ^(){

    printf("no number");

    };

    printBlock();

    2.基本使用,blcok可以作为参数,传递代码块。

    (1)(无参数,无返回值)

    @property (nonatomic, copy) void(^myBlock)();  //生成get和set方法

    self.myBlock = ^{                                              //赋值

    NSLog(@"hello world");

    };

    self.myBlock();                                                  //调用

    (2) (有参数,有返回值)

    @property (nonatomic, copy)  NSString *(^myBolckTwo)(NSString *str1, NSString *str2);  //生成set和get

    weakSelf.myBolckTwo = ^(NSString *str1,NSString *str2){

    return [NSString stringWithFormat:@"%@ and %@",str1, str2];

    };      //赋值

    NSLog(@"%@",weakSelf.myBolckTwo(@"123",@"678"));  //调用

    3.#define _WEAK_SELF __weak __typeof(&*self)weakSelf = self;

    在前面加上这个就可以用weakSelf调用。

    4.typedef void(^changeColor)(id);

    @property (nonatomic, copy) changeColor backgroundColor;

    使用typedef的好处就是可以把block放到model里面,只需要写出block

    的get和set方法,然后可以在使用的时候,在通过外面传值来对它进行赋值。

    这样就可以在不同的地方进行使用。

    换句话说,block也可以看成是一个属性(变量),想什么时候用就赋值,并调用。只不过它包含的是代码块。

    Block可以看做是一个变量,因此可以作为OC对象的属性

    5.  __Blcok 的使用

    变量x在Block外定义的,在Block代码块编译的时候,取的x的值为之前的值(不可修改)。

    在变量前添加__block关键字进行修饰后,此变量在Block代码块里的就是可更改的(可读可写),执行代码时取变量最新的值

    相关文章

      网友评论

          本文标题:Block 用法小结

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