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 块的更多相关文章

  1. ios开发 block语句块

    ios开发 block语句块 1.block 理解为匿名函数 2.block变量的定义 //定义block变量,^表示定义block //技巧:函数名左右加括号,在函数名前面在加^ void (^bl ...

  2. block(代码块)的介绍以及使用方法和变量之间的关系

    http://blog.csdn.net/menxu_work/article/details/8762848 block(代码块)的介绍以及使用方法和变量之间的关系 block(代码块)的介绍以及使 ...

  3. hadoop学习;block数据块;mapreduce实现样例;UnsupportedClassVersionError异常;关联项目源代码

    对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例 为了方便查看源代码,关联导入源代码的项目 先前的项目导入源代码是关联了源代码文件 block数据块,在配置 ...

  4. block代码块介绍

    关于block的简单介绍 什么是block? Block是C语言的一个语法特性,同时也是C语言的运行时特性,它很像C中的函数指针,因为你可以像使用函数指针一样的去使用block对象:它也很像C++中的 ...

  5. hadoop得知;block数据块;mapreduce实现样例;UnsupportedClassVersionError变态;该项目的源代码相关联

    对于开源的东西.特别是刚出来不久.我认为最好的学习方法是能够看到源代码,doc,样品测试 为了方便查看源代码,导入与项目相关的源代码 watermark/2/text/aHR0cDovL2Jsb2cu ...

  6. 转:Loadrunner——Block(块)技术

    在使用LoadRunner时经常遇到这样一个问题,如果对不同的事务进行不同次数的循环该怎么处理?默认情况下LR对所有的事务都是统一执行的,即虽然有多个事务,但它们被执行的循环次数都是一样的,那么LR如 ...

  7. loadrunner提高篇-block(块)技术和参数化

    Block(块)技术 block(块)技术是应用于在一个脚本中实现不同事务.不同次数循环或不同百分比循环的情况.比如在一个脚本中,登录执行3次,查询执行1次. 使用方法如下: 1.录制一个脚本,包含2 ...

  8. tablespace(表空间) / segment(断) / extent(盘区)/ block(块)/datafile(文件)之间的关系

    tablespace(表空间) / segment(断) / extent(盘区)/ block(块)之间的关系   tablespace : 一个数据库划分为一个或多个表逻辑单位,即表空间,每个表空 ...

  9. objc反汇编分析,block函数块为何物?

    上一篇向大家介绍了__block变量的反汇编和它的伪代码,本篇函数块block,通常定义成原型(^){},它在反汇编中是什么东西. 我们先定义将要反汇编的例子,为减少篇幅例子采用non-arc环境. ...

随机推荐

  1. [Cocos2d-x For WP8]Transition 场景切换

    在游戏中通常会打完了一关之后就会从当前的场景转换到另外一关的场景了,在Cocos2d-x中是由CCScene类表示一个场景.那么场景(CCScene)是为游戏中的精灵(CCSprite)提供了舞台,场 ...

  2. POJ 1177 Picture(求周长并)

    题目链接 看的HH的题解..周长有两部分组成,横着和竖着的,横着通过,sum[1] - last来计算,竖着的通过标记,记录有多少段. #include <cstdio> #include ...

  3. python 操作execl文件

    http://www.jb51.net/article/60510.htm import xlrdimport xlwt # 打开文件   workbook = xlrd.open_workbook( ...

  4. div里嵌套了img底部会有白块问题和图片一像素问题解决

    div里嵌套了img底部会有白块 因为img默认是按基线(baseline)对齐的.对比一下图片和右边的p, q, y等字母,你会发现这三个字母的“小尾巴”和图片下方的空白一样高.下面这张图中的黑线就 ...

  5. 【教程】模拟登陆百度之Java代码版

    [背景] 之前已经写了教程,分析模拟登陆百度的逻辑: [教程]手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程 然后又去用不同的语言: Python的: [教程]模 ...

  6. 设置TOMCAT的JVM虚拟机内存大小

    你知道如何设置TOMCAT的JVM虚拟机内存大小吗,这里和大家分享一下,JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序.这个初始内存和最大内存在一定程度都会影响程序的性能. 设置 ...

  7. Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用

    默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读 本地文件读取 sc.textFile("路 ...

  8. hdu City Game

    做这题之前建议做一下hdu1506题,两道题是极度相似的题,不同的是这个要处理的是m行,所以可以用一个dp[][]数组存储矩形的高度,之后就变成hdu1506了. 例如测试样例: 0 1 1 1 1 ...

  9. Cdn加速

    http://www.bootcdn.cn/ http://cdn.code.baidu.com/ backbone <script src="https://cdn.bootcss. ...

  10. 学习之痛(数据库->存储过程和函数)

    存储过程和函数作为数据库的一部分,为什么是学习之痛. 项目实际开发,考虑性能和代码维护,绝对不用存储过程. 如果单纯自己写个小程序糊弄人玩,还可以写写. [学习] 在数据库中定义一些SQL语句集合,然 ...