OC基础--block
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相关推荐
- OC基础 Block
什么是Blocks Blocks是C语言的扩充功能.可以概括为:带有自动变量(局部变量)的匿名函数. 所谓的匿名函数,就是没有名字的函数,在C语言中是不允许的. 在计算机科学中,这种概念也称为:&qu ...
- IOS开发基础之OC的Block入门_Day09-Block
IOS开发基础之OC的Block入门_Day09-Block block是oc的重要的基础知识,重点之重.跟协议一样重要,是进行函数回调重要手段.在后续的UI学习具有举足轻重的地位.学会基础的bloc ...
- OC语言Block和协议
OC语言Block和协议 分类: OC基础2014-10-07 09:24 162人阅读 评论(0) 收藏 举报 OC Block OC协议 OC语言BLOCK和协议 一.BOLCK (一)简介 B ...
- iOS开发面试知识整理 – OC基础 (二)
iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...
- OC基础第四讲--字符串、数组、字典、集合的常用方法
OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...
- OC基础回想(十二)协议
在OC基础(十一)中我们讨论了类别和非正式协议的奇异之处.在使用非正式协议时.能够仅仅实现你想要获得响应的方法.也不必在对象中声明不论什么内容来表示该对象可用作托付对象. 全部这些任务能够用最少的代码 ...
- OC基础 代理和协议
OC基础 代理和协议 1.协议 (1)oc语言中得协议:一组方法列表,不需要我们自己实现,由遵守协议的类来实现协议所定制的方法. (2)协议的使用步骤:制定协议-->遵守协议-->实现协议 ...
- OC语言Block 续
OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可 ...
- OC基础1:一些基本概念
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于类方法和实例方法: (1).类方法 ...
最新文章
- 让 SVN (TortoiseSVN)提交时忽略bin和obj目录
- FORK()子进程对父进程打开的文件描述符的处理
- 启动Tomcat一闪而过解决
- php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...
- 【leetcode】109. Convert Sorted List to Binary Search Tree
- java随机数排序算法_理解快速排序算法
- [币严区块链]以太坊(ETH)Dapp开发入门教程之宠物商店领养游戏
- 2019计算机二级java软件_2019年计算机二级Java考试冲刺题及答案(2)
- Example of Zookeeper and Solr cluster with Docker networking
- 第四十七节,random 随机数模块
- 基于链队列的银行叫号系统
- arm920t内核技术手册
- QTableWidget获取一行数据
- vim 快速删除一个英文单词
- VMware vCenter/vSphere/vSan/Esxi/7.0 lic许可
- 解决win7设置默认程序打开方式失效
- 北京首都国际机场1号航站楼、2号航站楼、3号航站楼航空公司名单
- 你了解吗?小游戏和H5小游戏不是一码事
- 【高数】两类曲线积分的联系
- 自助取款机系统(C#)
热门文章
- C语言霍夫曼编码压缩,数据结构大作业——哈夫曼编码压缩BMP格式文件
- winxp计算机远程桌面连接,winxp系统远程桌面不能连接指定计算机的解决方法
- js des加密 java_java JS DES互相加密解密 通用!!!
- gateway配置mysql_使用Gateway配置路由以及动态路由
- java导出word文档_PHPWord导出word文档
- 应对计算机领域中后门,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...
- 地址html后面传参,JS中获取地址栏url后面的参数的三种方法
- linux ip协议栈 漏洞,【漏洞预警】雪藏11年:Linux kernel DCCP double-free 权限提升漏洞(CVE-2017-6074)...
- python还是java好找工作_你觉得学 Python 还是 Java 更好找工作?
- c语言入门经典课后作业,C语言入门经典习题答案.doc