1.block 是oc的一个数据类型

2.作用:用了封装一段代码,可以在任何时候调用执行。即在编译的时候忽略block修饰的代码段,在调用这个代码时,也就是运行时,

    编译器会自动加载这个代码, so这样的程序,效率非常高

3.语法:

  定义一个block类型的变量:有参-》返回值类型 (^变量名) (参数类型1,参数类型2)    。eg. void (^myblock)(int,int)

               无参-》返回值类型 (^变量名)   eg. void (^myblock)

  定义一个block代码段:    有参-》^(参数类型1 参数名称,参数类型2 参数名称){// 代码,也可以有返回值}

              无参-》^(){//代码}或 ^{//代码}

  调用一个block代码段:变量名(参数值...)

4.用typedef 定义一个bolck类型的变量:

  定义:  typedef  返回值类型 (^自定义类型名) (参数类型,...)

  使用:     自定义类型名  变量名=^(参数类型 参数名称,...)`{//代码}

这个使用类似指向函数的指针:定义-》返回值 (*指针名) (参数类型,...),赋值-》指针名=函数名称,调用-》指针名(参数值,...)

5.block代码段内,可以访问该代码段外的变量,但是默认不能修改外部的变量,

使用 __block 关键字修饰的变量,在block代码段内就可以修改了

  eg. __block int a=0;

转载于:https://www.cnblogs.com/hui1107464497/p/4509778.html

block关键字的使用相关推荐

  1. 初识JAVA07:自定义类、构造方法、this关键字、static关键字、block关键字、Debug调试工具

    JAVA面向对象01 面向对象 自定义类 构造方法 this关键字 static关键字 block关键字 Debug调试工具 面向对象 面向对象和面向过程的区别: ​ 面向过程: ​ 关注" ...

  2. Block的引用循环问题 (ARC non-ARC)

    2010年WWDC发布iOS4时Apple对Objective-C进行了一次重要的升级:支持Block.说到底这东西就是闭包,其他高级语音例如Java和C++已有支持,第一次使用Block感觉满简单好 ...

  3. iOS 如何使用 Block

    什么是 block Blocks 是 iOS 4.0 之后有的新功能. Block 能够让我们的代码变得更简单,能够减少代码量,降低对于 delegate 的依赖,还能够提高代码的可读性. 本质上来说 ...

  4. 《黑马程序员》 block的使用(Objective - c语法)

    ------- <a href="http://www.itheima.com" target="blank">android培训</a> ...

  5. Ansible(十九)-- ansible 中的任务控制(四)--block、rescue、always块

    使用"when"关键字对条件进行判断,如果条件成立,则执行对应的任务,但是,我们可以发现,当条件成立时,我们只能执行一个任务,如果我们想要在条件成立时,执行三个任务,该怎么办呢?难 ...

  6. Python之 jinja2模板浅析

    目录 前言 1. jinja2介绍 1.1 jinja2的优点 1.2 安装jinja2 2. jinja2语法 2.1 基本语法 2.2 jinja2变量 2.3 jinja2中的过滤器 3. ji ...

  7. MangoFix:iOS热修复另辟蹊径

    今天向大家介绍的是iOS热修复的另一解决方案:MangoFix.介绍他的原因是他和传统的iOS热修复使用JavaScript bridge 的方式完全不同,MangoFix是一个语法和OC语法非常类似 ...

  8. pug模板引擎(原jade)

    前面的话 为什么要引入pug,pug有什么特别之处呢?有一些嵌套层次较深的页面,可能会出现巢状嵌套,如下图所示 在后期维护和修改时,一不小心少了一个尖括号,或者某个标签的开始和闭合没有对应上,就会导致 ...

  9. 树莓派4b搭建danted socks5 代理服务器 利用闲置宽带扩展搬砖IP

    如何用树莓派(Raspberry Pi)搭建Socks5代理服务器--danted!让你可以利用家中闲置宽带扩展ip 适合多开搬砖等多种玩法,当然闲置老款电脑也可以替代树莓派. 首先,但凡有IP需求的 ...

最新文章

  1. 浅析jQuery的链式调用 之 each函数
  2. Linux下vi和vim模式相互切换
  3. android中的常用方法,android开发中常用方法总结
  4. 微服务介绍及Asp.net Core实战项目系列之微服务介绍
  5. 产品经理必懂技术术语(后台类)
  6. Qt文档阅读笔记-stackUnder官方解析与实例
  7. 画质与性能双重加持,Unity超越游戏的“炫技”
  8. host-only局域网络
  9. 深入浅出 MFC -WIN32基本概念
  10. vue学习笔记-promise
  11. 变分法与最优控制matlab,1987_11变分法与最优控制_10654423.pdf
  12. kindle刷机ttl_摔一下变砖了,ttl刷机没效果,谁帮看看最后三行那个error什么意...
  13. CLH(Craig, Landin, and Hagersten locks)机制
  14. 浅谈JAVA设计模式之——责任链模式(COR)
  15. 惠普笔记本恢复出厂系统
  16. 基于深度学习的医学图像分割学习笔记(九)UNet 3+
  17. JavaScript设计模式之策略模式(学习笔记)
  18. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容
  19. 3dsMax2022插件开发环境的搭建
  20. 使用Aeon Timeline 2 for mac如何恢复丢失的文件

热门文章

  1. VS2005快捷键大全
  2. 前端框架MVC/MVVM分析系列
  3. PyCharm无法启动的问题
  4. 不是《归去来》是《难念的经》
  5. php mysql简单链接_php mysql 数据库链接简单例子
  6. Rest 微服务工程搭建03——工程重构
  7. ES6 模块化的基本语法——默认导出 与 默认导入、按需导出 与 按需导入、直接导入并执行模块代码
  8. @PropertySource@ImportResource@Bean
  9. jquery中eq和get
  10. hibernate同时插入两条相同数据(偶尔)原因调查