block的初识
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标签: ...
随机推荐
- 如何从eclipse中下载并导入Github上的项目
eclipse导入项目,方法就是点击File ->Import,选择Existing Projects into Workspace 但前提是,你导入的这个项目原本就是用eclipse的构建的, ...
- 批量改名工具 Bulk Rename Utility
好用的批量改名工具 Bulk Rename Utility 功能: 这个工具既可以改文件名,也可以改目录. 使用技巧: 结合前缀4位 数字 可以让文件排列很整齐 例如: 0030 关于 ...
- TP中的session和cookie
session:1.session('name','value'); //设置session2.$value = session('name'); // 获取所有的session 3.2.2版本新 ...
- module
扯淡的人 http://www.cnblogs.com/yuanchenqi/articles/5732581.html 不被调用的 要写在这下面 1 if __name__=="__ ...
- html中空格转义字符
记录一下,空格的转义字符分为如下几种: 平时一般用的是 1. &160#;不断行的空白(1个字符宽度) 2. &8194#;半个空白(1个字符宽度) 3. &8195# ...
- I/O 请求数据包
MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/hh439638(v=vs.85).aspx 发送到设备驱动程序的大部 ...
- 理解C++的inline函数
C++的inline函数就是编译器在编译代码时,将"对此函数的每一个调用"都以函数本体替换之,该过程发生在编译期间. inline函数的优点是,它可以省去函数调用所带来的额外开销, ...
- C#实现堆栈
堆栈(Stack)是一种特殊的线性表,是一种操作只允许在尾端进行插入或删除等操作的线性表.表尾允许进行插入删除操作,称为栈顶(Top),另一端是固定的,称为栈底(Bottom).栈的操作使按照先进后出 ...
- ODAC学习地址
http://www.cnblogs.com/ChinaEHR/p/4471920.html
- mysql日志与备份恢复
一.mysql日志: mysql的日志种类有很多,常见的有二进制日志,一般查询日志,满查询日志,中继日志,事务日志等,具体信息可以通过 mysql> SHOW GLOBAL VARIABLES ...