Block 介绍及使用

2019-08-01  本文已影响0人  梦想不是遥不可及的

Block :带有自动变量的函数

语法:

^返回值类型(参数列表){函数表达式}

返回值类型可以省略 ^(参数列表){函数表达式}

参数列表 如果没有值 也可以省略 ^{函数表达式}

//声明Block

返回值类型 (^变量名)(参数列表) = Block表达式

void(^block1)(NSString *a,NSString *b);//没有返回值

//声明Block变量跟赋值 一起

int(^blcok)(int)=^(int a){

        return a*3;

};

NSLog(@"*************%d***************",blcok1(2));

//输出结果 *************6***************

//Block 我用到的主要是传值跟传递方法两个目的

传值的控制器 声明 block

需要传值的地方调用

得到值的控制器 接收

得到的结果:我要的结果block也不是特别难========

到这里就实现了 传值的过程!

__block  __weak 修饰词 区别

1.__block 能修饰对象也能修饰基本数据类型 __weak 能修饰对象不能修饰基本数据类型

2.__block 对象可以在block中被重新赋值 __weak 不可以

3.__block 对象在ARC下可能会导致循环引用 非ARC下会避免循环引用

__weak 只在ARC下使用,可以避免循环引用

默认情况,无法修改block捕获的变量,但是__block却可以,__block 都做了什么。

默认情况下,block拷贝进去的是变量的值,加了__block 之后,block里面的就是变量的内存地址。

上一篇 下一篇

猜你喜欢

热点阅读