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环境. ...
随机推荐
- POJ 2891 Strange Way to Express Integers(中国剩余定理)
题目链接 虽然我不懂... #include <cstdio> #include <cstring> #include <map> #include <cma ...
- linux 好用的程序
来自 http://www.cnblogs.com/skyseraph/archive/2010/10/30/1865280.html * Shell: bash.我使用 bash 的 vi 命令 ...
- jQuery.Validate验证库详解
一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ...
- uva10098 Generating Fast, Sorted Permutation
#include"iostream"#include"stdio.h"#include"string.h"#include"alg ...
- Html - 对话箭头
对话箭头 <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="U ...
- HTTP 笔记与总结(6)referer 头与防盗链
在百度贴吧(或 QQ 空间等)中找到一张图片,复制图片地址,在站外通过 img src 引用,会发现: 此外,在一些统计软件中,统计访客的来路(直接访问.外部链接.搜索引擎),都用到了 HTTP 协议 ...
- PHP实现远程下载文件到本地
PHP实现远程下载文件到本地 投稿:hebedich 字体:[增加 减小] 类型:转载 经常写采集器发布接口需要使用到远程附件的功能,所以自己写了一个PHP远程下载文件到本地的函数,一般情况下已经 ...
- nginx gzip 模块配置
#gzip模块设置 gzip on; #开启gzip压缩输出 gzip_min_length 1k; #最小压缩文件大小 gzip_buffers 4 16k; #压缩缓冲区 gzip_http_ve ...
- powershell 批量生成文件
缘由 由于现在替省厅工作,年底了要向地市收很多文件,哪些地市已报,哪些没报,需要一目了然. 我的处理方式是收什么文件就针对该文件新建一个目录,然后在该目录下为所有地市建一个占位文件. 等收到项某市的材 ...
- 解决mysql数据库连接问题
设置mysql远程连接root权限 在远程连接mysql的时候应该都碰到过,root用户无法远程连接mysql,只可以本地连,对外拒绝连接.需要建立一个允许远程登录的数据库帐户,这样才可以进行在远程操 ...