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. JUnit 简介

    一.简介 JUnit是一个开源的java单元测试框架.在1997年,由 Erich Gamma 和 Kent Beck 开发完成.这两个牛人中 Erich Gamma 是 GOF 之一:Kent Be ...

  2. FlashBuilder 新建项目时提示 java.lang.nullpointerexception

    可以尝试安装 Air SDK

  3. OAF_开发系列18_实现OAF页面跳转setForwardURL / forwardImmediately(案例)

    20150716 Created By BaoXinjian

  4. java 事件监听 - 控件

    java 事件监听 //事件监听 //事件监听,写了一个小案例,点击按钮改变面板的颜色. import java.awt.*; import javax.swing.*; import java.aw ...

  5. [Linux编程] module_param()函数学习笔记

    在读TCP cubic源码中,遇到了module_param(),网上查到的资料如下: 在用户态下编程可以通过main()来传递命令行参数,而编写一个内核模块则可通过module_param()来传递 ...

  6. [DFNews] EnCase v7.08发布

    EnCase v7.08 近日正式发布,7.08增加了Evidence Processor Manager以及Evidence Processor,不仅可以在本地实现证据处理队列,也支持了通过网络进行 ...

  7. (Array,位操作)137. Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  8. SQL Server Reporting Services本机模式下的权限管理

    SQL Server Reporting Services在安装配置后,缺省只给BUILTIN\Administrators用户组(实际上只有本机的Administrator用户)提供管理权限.所以所 ...

  9. I prefer fcitx

    sudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update Then, you should install Fcitx.Fc ...

  10. 将jquery.shCircleLoader插件修改为zepto.js兼容

    经过查阅资料zepto 和 jquery 的区别后发现是 (1)zepto.js  删去了 jquery 的 innerHeight() 和 innerWidth() 属性  (2)zepto.js和 ...