block的介绍:
Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”。
SDK4.0新增的API大量使用了Block。
Block是一个匿名的函数代码块,此代码块可以作为参数传递给其他对象。
对象
方法{
block块{
...代码
};
}
Block的使用:
1.block的声明
//定义类型,定义变量
int(^sum)(int a, int b );
2.block的创建
//实现block
sum = ^(int a, int b){
return a+b;
};
3.block的调用
//1直接调用
int sum1 = ^(int a,int b){
return a+b;
}(5,9);
NSLog(@"%d",sum1);
//2通过block变量调用
int sum2 = sum (20,39);
NSLog(@"%d",sum2);
4.多种情况下的block
#pragma mark creatkindsofBlock
- (void)creatkindsofBlock{
//1---无参数,无返回值
^(){
NSLog(@"无参数,无返回值");
}();
//2---有参数,无返回值
^(int a,NSString *text){
NSLog(@"%d, %@",a,text);
}(88,@"有参数,无返回值");
//3---无参数,有返回值
NSString *text = ^(){
return @"有返回值,无参数";
}();
NSLog(@"%@",text);
//4---有参数,有返回值
}
5.全局block变量
首先定义一个全局的block
{
int(^myBlock)(int a, int b);
}
#pragma mark - 全局block变量
-(void)createMyBlock{
//定义block变量
int(^sumBlock)(int x,int y);
//实现block,并且赋值
sumBlock = ^(int x,int y){
return x+y;
};
//直接赋值,block变量可以直接赋值
myBlock = sumBlock;
}
****全局block可以直接调用,直接赋值
//全局block变量
[self createMyBlock];
NSLog(@"sum :%d",myBlock(20,60));
当然block的初步认识里还应该有block的应用场景,block和变量,block的内存管理一些问题,我就不写了
block的初识的更多相关文章
-
Block系列1:初识block
//-------1.定义函数----- //1.函数 int sum(int a,int b) { return a+b; } //------------------2.声明--------- / ...
-
初识block
我们可以把Block当做Objective-C的匿名函数.Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观.另外,block的实现具有封闭性(clos ...
-
初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
-
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识
本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
-
初识Hadoop入门介绍
初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...
-
hadoop初识
搞什么东西之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做).但很多开发的朋友在做了多年项目以后,都习惯是先How,然后What,最后才是Why,这样只会让自己变 ...
-
IOS之UI -- UITableView -- 1 -- 相关初识
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
-
iOS开发技巧系列---使用链式编程和Block来实现UIAlertView
UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...
-
Day15 HTML补充、初识JavaScript
一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ...
随机推荐
-
When I see you again(加密原理介绍,代码实现DES、AES、RSA、Base64、MD5)
关于网络安全的数据加密部分,本来打算总结一篇博客搞定,没想到东西太多,这已是第三篇了,而且这篇写了多次,熬了多次夜,真是again and again.起个名字:数据加密三部曲,前两部链接如下: 整体 ...
-
jquery qrcode参数
{ // render method: 'canvas', 'image' or 'div' render: 'canvas', // version range somewhere in 1 .. ...
-
创业草堂之二十二:创业公司C类官员的职位说明书
麻雀虽小,五脏俱全. 创业公司启航,三五十来个人.七八条枪,其中“C”字开头的官儿还真少不了 – CEO.CTO.COO.CFO.CMO.CIO.CCO.CLO.Chairman/Chairwoman ...
-
MyEclipse中使用JUnit进行单元测试
1. 下载JUnit的jar文件,下载地址在这里 2. 在MyEclipse中新建一个要测试的项目HelloJUnit 3. 添加一个要测试的类HelloJUnit,代码如下,注意需要先建packag ...
-
Ubuntu package offline install
apt-get Use apt-get with the "--print-uris" option to do it. I also add "-qq" so ...
-
hdu 4455 Substrings(找规律&;DP)
Substrings Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
-
LPC2478中断控制器以及串口详解
LPC2478的中断系统 LPC2478使用的是ARM PrimeCell向量中断控制器,一共支持32个中断向量,处于AHB空间便于系统快速访问,在中断向量的硬件优先级上还有一层可以用户自己设计的软件 ...
-
LabVIEW(六):创建VI
1.多使用快捷键,可以提高工作效率键盘快捷键 说明对象/动作Shift-单击 选取多个对象:将对象添加到当前选择之中.方向箭头键 将选中的对象每次移动一个像素.Shift-方向箭头键 将选中的对象每次 ...
-
Allegro PCB Design GXL (legacy) 设置十字大光标
Allegro PCB Design GXL (legacy) version 16.6-2015 1.菜单:Setup > User Preferences... 2.User Prefere ...
-
ConcurrentLinkedQueue since java1.5
1 父类 java.lang.Object 继承者 java.util.AbstractCollection<E> 继承者 java.util.AbstractQueue<E> ...