UI(二十)block

作者: 社会主义顶梁鹿 | 来源:发表于2018-07-30 17:55 被阅读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

    相关文章

      网友评论

        本文标题:UI(二十)block

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