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

  1. Block系列1:初识block

    //-------1.定义函数----- //1.函数 int sum(int a,int b) { return a+b; } //------------------2.声明--------- / ...

  2. 初识block

    我们可以把Block当做Objective-C的匿名函数.Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观.另外,block的实现具有封闭性(clos ...

  3. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  4. Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识

    本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  5. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

  6. hadoop初识

    搞什么东西之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做).但很多开发的朋友在做了多年项目以后,都习惯是先How,然后What,最后才是Why,这样只会让自己变 ...

  7. IOS之UI -- UITableView -- 1 -- 相关初识

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. iOS开发技巧系列---使用链式编程和Block来实现UIAlertView

    UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...

  9. Day15 HTML补充、初识JavaScript

    一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ...

随机推荐

  1. SparkConf加载与SparkContext创建(源码阅读二)

    紧接着昨天,我们继续开搞了啊.. 1.下面,开始创建BroadcastManager,就是传说中的广播变量管理器.BroadcastManager用于将配置信息和序列化后的RDD.Job以及Shuff ...

  2. Could not find com.android.tools.build:gradle:1.3.0.

    * What went wrong:          A problem occurred configuring project ':TZYJ_Android'.> Could not re ...

  3. [ActionScript 3.0] 图片左右循环移动

    有时候多张图片展示需求中,需要左右循环移动展示,为了以后省时间思考,写个例子: import com.tweener.transitions.Tweener; import flash.display ...

  4. 如何将Debug文件夹下的资源打包成一个EXE文件直接执行

    前言:前段时间写了个小程序,想分享给好友看看,可所以资源都放在Debug文件夹下,整个文件夹发给人家这也太……,为了显得稍微专业一点,想把它们打包一个EXE文件执行,因为我见到到这样的程序,直接一个E ...

  5. asp.net 4.0+ webform 程序中集成mvc4混合应用

    vs2015之后新建web站点可以很轻松的搭建mvc与webform的混合应用,vs2012下其实也可以通过简单的几部也可以实现,具体如下: 1.新建packages.config文件,里面加上必要的 ...

  6. Git——2

    什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...

  7. 常用PHP函数类目录

    说明:用来记录我在开发过程中,经常用到的一些常用函数或者常用类. 常用函数 PHP常用函数 (1) 常用类 PHP表单数据校验类

  8. CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)

    在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...

  9. TODO的使用

    在vs2012中使用TODO添加注释

  10. php SimpleXML 例子

    $txt = GetRemoteText($url); if(strlen($txt) > 0) { $xml = simplexml_load_string($txt); //获取xml if ...