与时俱进的IT

UI(二十)block

2018-07-30  本文已影响0人  社会主义顶梁鹿

*block 代码块 闭包(一个区域) 与C语言函数类似

*block 具有反向传值、回调的功能

 回调:执行完毕之后返回再去执行

 反向传值:回调的时候给它一个值

 *它分为声明实现和调用两部分

 声明:声明有这么一个类型的block (会执行这一步)

 实现:只要不主动调用就不会执行

 调用:当调用的时候会返回去执行实现的部分

*block 可以当参数也可以当变量使用

 1、block声明和实现

 2、分析回调 反向传值

 3、当做变量使用

 4、当做参数使用

 5、当做属性使用 解决block的内存循环引用

 6、让block代替代理

#pragma mark---block 的公式---

 1、声明实现 写到一块的公式

  *返回值类型 (^block名字)(参数列表:参数类型 参数名)= ^(参数列表:参数类型 参数名){

 实现代码

    (如果有返回值 需要return返回值类型的值)

  }

  *调用: block名字(参数);

 2、声明实现分开的公式

  (1)声明

 返回值类型 (^block名字)(参数列表);

  (2)实现

  block名字 = ^(参数列表){

 实现的内容 (如果有返回值return)

  }

  (3)调用

  block名字(实参);

  ****先实现后调用 不能未写实现就调用

 @() 转成NSNumber 类型 字典不能存int类型

 #pragma mark---__block---

 *__block:修饰词 修改block之外变量内容的修饰词

 ***如果不加__block 就不允许在block方法里面修改外部变量的值 就算是赋值 得到的也只是修改之前的值

 *__weak: 修饰词 弱引用 用它修饰的变量都是不安全的变量 -> 告诉编译器 可以释放这个对象

 *变量的名字在栈里面

 *修改不是局部变量的值的时候(涉及到对象)使用__weak 修饰 把不能销毁的对象用一个临时变量替换

 *修改是局部变量的值的时候用__block

上一篇下一篇

猜你喜欢

热点阅读