block与函数类似:1.可以保存代码  2.又返回值  3.有形参  4.调用方式一样

block的标志:^

一、定义一个无参无返回值的block

void (^myBlock)();--1.void 代表这个block变量没有返回值  2.最右边的括号(),代表block的参数,没有参数的话就为空

3.中间的括号中^是block的标志,myBlock是block变量的名字

二、定义一个接收两个int类型数据返回int类型的block

int (^myBlock)(int,int);

代码示例:

1 // 定义一个block变量
2     int (^sumBlock)(int,int);
3     // 给定义的block变量赋值
4     sumBlock = ^(int a,int b)
5     {
6         return a+b;
7     };

三、block中访问和修改变量的问题

1.block内部可以访问外面的变量

2.默认情况系,block内部不能修改外面的局部变量

3.给局部变量加上__block关键字(两个下划线),这个局部变量就可以在block内部修改

代码示例:

 1 void test3()
 2 {
 3     int a = 10;
 4     __block int b = 20;
 5
 6     void (^block)();
 7
 8     block = ^{
 9         // block内部可以访问外面的变量
10         //NSLog(@"a = %d", a);
11
12         // 默认情况下,block内部不能修改外面的局部变量
13         // a = 20;
14
15         // 给局部变量加上__block关键字,这个局部变量就可以在block内部修改
16         b = 25;
17     };
18
19
20     block();
21 }

四、OC中的方法没有重载这一说,但是当遇到两个或两个以上的block的参数和返回值类型都一样的情况下,解决方法为利用typedef定义block类型,如下:

typedef int (^MyBlock)(int,int);--这句代码定义了一个接受两个int类型参数,返回int的MyBlock类型

调用:MyBlock sumBlock = ^(int a ,int b){ return a + b ; };

OC基础--block相关推荐

  1. OC基础 Block

    什么是Blocks Blocks是C语言的扩充功能.可以概括为:带有自动变量(局部变量)的匿名函数. 所谓的匿名函数,就是没有名字的函数,在C语言中是不允许的. 在计算机科学中,这种概念也称为:&qu ...

  2. IOS开发基础之OC的Block入门_Day09-Block

    IOS开发基础之OC的Block入门_Day09-Block block是oc的重要的基础知识,重点之重.跟协议一样重要,是进行函数回调重要手段.在后续的UI学习具有举足轻重的地位.学会基础的bloc ...

  3. OC语言Block和协议

    OC语言Block和协议 分类: OC基础2014-10-07 09:24 162人阅读 评论(0) 收藏 举报 OC Block OC协议 OC语言BLOCK和协议 一.BOLCK (一)简介  B ...

  4. iOS开发面试知识整理 – OC基础 (二)

    iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...

  5. OC基础第四讲--字符串、数组、字典、集合的常用方法

    OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...

  6. OC基础回想(十二)协议

    在OC基础(十一)中我们讨论了类别和非正式协议的奇异之处.在使用非正式协议时.能够仅仅实现你想要获得响应的方法.也不必在对象中声明不论什么内容来表示该对象可用作托付对象. 全部这些任务能够用最少的代码 ...

  7. OC基础 代理和协议

    OC基础 代理和协议 1.协议 (1)oc语言中得协议:一组方法列表,不需要我们自己实现,由遵守协议的类来实现协议所定制的方法. (2)协议的使用步骤:制定协议-->遵守协议-->实现协议 ...

  8. OC语言Block 续

    OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可 ...

  9. OC基础1:一些基本概念

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于类方法和实例方法: (1).类方法 ...

最新文章

  1. 让 SVN (TortoiseSVN)提交时忽略bin和obj目录
  2. FORK()子进程对父进程打开的文件描述符的处理
  3. 启动Tomcat一闪而过解决
  4. php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...
  5. 【leetcode】109. Convert Sorted List to Binary Search Tree
  6. java随机数排序算法_理解快速排序算法
  7. [币严区块链]以太坊(ETH)Dapp开发入门教程之宠物商店领养游戏
  8. 2019计算机二级java软件_2019年计算机二级Java考试冲刺题及答案(2)
  9. Example of Zookeeper and Solr cluster with Docker networking
  10. 第四十七节,random 随机数模块
  11. 基于链队列的银行叫号系统
  12. arm920t内核技术手册
  13. QTableWidget获取一行数据
  14. vim 快速删除一个英文单词
  15. VMware vCenter/vSphere/vSan/Esxi/7.0 lic许可
  16. 解决win7设置默认程序打开方式失效
  17. 北京首都国际机场1号航站楼、2号航站楼、3号航站楼航空公司名单
  18. 你了解吗?小游戏和H5小游戏不是一码事
  19. 【高数】两类曲线积分的联系
  20. 自助取款机系统(C#)

热门文章

  1. C语言霍夫曼编码压缩,数据结构大作业——哈夫曼编码压缩BMP格式文件
  2. winxp计算机远程桌面连接,winxp系统远程桌面不能连接指定计算机的解决方法
  3. js des加密 java_java JS DES互相加密解密 通用!!!
  4. gateway配置mysql_使用Gateway配置路由以及动态路由
  5. java导出word文档_PHPWord导出word文档
  6. 应对计算机领域中后门,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...
  7. 地址html后面传参,JS中获取地址栏url后面的参数的三种方法
  8. linux ip协议栈 漏洞,【漏洞预警】雪藏11年:Linux kernel DCCP double-free 权限提升漏洞(CVE-2017-6074)...
  9. python还是java好找工作_你觉得学 Python 还是 Java 更好找工作?
  10. c语言入门经典课后作业,C语言入门经典习题答案.doc