block iOS 块
block 是个很陌生的东西啊。以前没有学会,现在再看它,还是觉得很稀奇古怪。
无奈,之后硬着头皮学了。。
//有参返回值
格式:
返回值类型 (^变量名)(参数类型及个数) = ^(形参列表){
代码块语句;
return;
};
eg:
int (^plus)(int a,int b) = ^(int a,int b){
return a+b;
};
NSLog(@"%d",plus(2,3));
1.返回值类型是int;
2.变量名是plus;
3.参数类型是int,个数,就是使用逗号隔开;
4.在后面,形参也是要分别都写出来的;
5.在大括号里面把要写的语句加上;
6.最后使用分号,以示结束;
7.调用时,block方法后面要添加().
这样就相当于公式吧。以前不求甚解,现在求也求不通。
对于无返回值的block,就是没有返回值的,可以分为有参数和没有参数两种。
只是单纯地去执行里面的语句。我是这么理解的。
有参无返回值:
格式:
void(^变量名)(参数类型及个数) = ^(形参列表){
代码块语句;
};
eg:
void (^myblock1)(int,int) = ^(int a, int b){
NSLog(@"a+b=%d",a+b);
};
myblock1(1,2);
无参有返回值
格式:
void (^block变量名)() = ^(){
代码块的语句;
};
优化:
void (^block变量名)() = ^{
代码块语句;
};
void(^myBlock4)()=^{
NSLog(@"我很好");
};
总结了上面的以后,觉得清晰了很多。在UI里面也会用到传值。以后在工作中要多总结、多实践。
光说不练假把式。。
补:
typedef 忘写了。。
typedef,其实是把block定义为了一个类型。当同一类型有多种不同的变量的时候,这个就方便多了。
typedef void (^Block)();
----相当于定义了一个Block类型。我们可以随便定义这个类型的变量了。
Block b1 = ^{
NSLog(@"helloWorld");
};
b1();
//定义有参数/返回值的block类型
//定义新的别名
//返回值是int,有两个int类型的参数
typedef int (^NewType)(int,int);
NewType new1 = ^(int a,int b){
return a+b;
};
//连续定义多个NewType类型的变量
NewType new2,new3,new4;
new1 = ^(int x,int y){
return x>y?x:y;
};
int s = new1(2,3);
NSLog(@"s = %d",s);
相对来说,还是很方便快捷的。
block iOS 块的更多相关文章
- ios开发 block语句块
ios开发 block语句块 1.block 理解为匿名函数 2.block变量的定义 //定义block变量,^表示定义block //技巧:函数名左右加括号,在函数名前面在加^ void (^bl ...
- block(代码块)的介绍以及使用方法和变量之间的关系
http://blog.csdn.net/menxu_work/article/details/8762848 block(代码块)的介绍以及使用方法和变量之间的关系 block(代码块)的介绍以及使 ...
- hadoop学习;block数据块;mapreduce实现样例;UnsupportedClassVersionError异常;关联项目源代码
对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例 为了方便查看源代码,关联导入源代码的项目 先前的项目导入源代码是关联了源代码文件 block数据块,在配置 ...
- block代码块介绍
关于block的简单介绍 什么是block? Block是C语言的一个语法特性,同时也是C语言的运行时特性,它很像C中的函数指针,因为你可以像使用函数指针一样的去使用block对象:它也很像C++中的 ...
- hadoop得知;block数据块;mapreduce实现样例;UnsupportedClassVersionError变态;该项目的源代码相关联
对于开源的东西.特别是刚出来不久.我认为最好的学习方法是能够看到源代码,doc,样品测试 为了方便查看源代码,导入与项目相关的源代码 watermark/2/text/aHR0cDovL2Jsb2cu ...
- 转:Loadrunner——Block(块)技术
在使用LoadRunner时经常遇到这样一个问题,如果对不同的事务进行不同次数的循环该怎么处理?默认情况下LR对所有的事务都是统一执行的,即虽然有多个事务,但它们被执行的循环次数都是一样的,那么LR如 ...
- loadrunner提高篇-block(块)技术和参数化
Block(块)技术 block(块)技术是应用于在一个脚本中实现不同事务.不同次数循环或不同百分比循环的情况.比如在一个脚本中,登录执行3次,查询执行1次. 使用方法如下: 1.录制一个脚本,包含2 ...
- tablespace(表空间) / segment(断) / extent(盘区)/ block(块)/datafile(文件)之间的关系
tablespace(表空间) / segment(断) / extent(盘区)/ block(块)之间的关系 tablespace : 一个数据库划分为一个或多个表逻辑单位,即表空间,每个表空 ...
- objc反汇编分析,block函数块为何物?
上一篇向大家介绍了__block变量的反汇编和它的伪代码,本篇函数块block,通常定义成原型(^){},它在反汇编中是什么东西. 我们先定义将要反汇编的例子,为减少篇幅例子采用non-arc环境. ...
随机推荐
- 【BZOJ】2152: 聪聪可可(点分治)
http://www.lydsy.com/JudgeOnline/problem.php?id=2152 随便点分..... 只是我在考虑一个地方逗乐.. 当路径长度mod3=0的点数直接乘起来就好. ...
- COJ977 WZJ的数据结构(负二十三)
试题描述 输入一个字符串S,输出S的最长连续回文子串长度. 输入 输入一个字符串S. 输出 输出S的最长连续回文子串长度 输入示例 abacbbc 输出示例 4 其他说明 1<=|S|<= ...
- NodeJS中form上传附件中针对表单的multiple attribute出现的问题总结
在express中上传附件需要在表单中添加enctype="multipart/form-data"属性,并且在新的4.0.1版本中需要手动添加中间件app.use(connect ...
- RN组件之ToolbarAndroid
一.ToolbarAndroid 1.该组件封装了Android平台中的ToolBar组件(只适用于Android平台).一个ToolBar组件可以显示一个Logo图标 以及一些导航图片(例如:菜单功 ...
- cvReleaseImage 释放内存出错
cvReleaseImage是OpenCV中C语言库中的释放图片内存的函数,比如我们加载或者克隆了一幅图片,当不需要这幅图片了时,我们为了避免内存泄露,需要释放这些空间,可以参见我之前的博客OpenC ...
- eval(gzinflate(base64_decode N层,自动解密
<?php header("Content-type: text/html; charset=utf-8"); $decode = 'DZdFEsRWEkT3vojt0EJM ...
- LINQ Count/Sum/Min/Max/Avg
参考:http://www.cnblogs.com/peida/archive/2008/08/11/1263384.html Count/Sum/Min/Max/Avg用于统计数据,比如统计一些数据 ...
- 当PHP引擎试图实例化一个未知类的操作
在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来,但是这样可能会使得在引用文件的新脚本中,存在大量的includ ...
- [转]把动态页面.aspx 生成静态页面.html
本文转自:http://blog.csdn.net/csb5201314/article/details/5391688 如果要把主页Index.aspx 生成静态页面 Index.html后输出会提 ...
- HTML&CSS布局练习---360导航页面
一共分为7个部分:由HTML和CSS外部样式表做成 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...