http://blog.csdn.net/itpeng523/article/details/23965147

一、先用Xcode创建一个空工程

学习block之前先用弄懂c语言的函数指针

看代码:

typedef int (^SumP)(int,int);//用typedef定义一个block类型

void test()

{

printf("调用了test函数\n");

}

int sum(int a,int b)

{

return a+b;

}

int main(int argc,constchar * argv[])

{

void (*p)();//这是一个函数指针 能够指向一个返回值为void 没有形参的函数

//(*p)是固定写法,代表指针变量p将来肯定指向函数

//左边的void:指针变量p指向的函数没有返回值

//右边():指针变量p指向的函数没有形参

p = test;//指针变量p指向test函数

//利用指针变量间接调用取出函数

(*p)();

//也可以

p();

int(*xp)(int,int);//定义一个指向函数的指针返回值是int 函数的参数是int int

xp =sum;

int c = (*xp)(1,2);

printf("c is %d\n",c);

//下面来学习block

/*

作用:

Block封装了一段代码,可以在任何时候执行

Block可以作为函数参数或者函数的返回值,而本身又可以带输入参数或返回值

block,在多线程、异步任务,集合遍历,集合排序、动画专场用得多

*/

//block用来保存一段代码

//block的标志 :^

//block跟函数指针很像

//定义block变量没有返回值没有参数

void(^myblock)() = ^ {

NSLog(@"---------");

NSLog(@"---------");

};

//利用block变量调用block内部的代码

myblock(); //运行block

//定以一个block返回值为int函数的参数为int int

int(^sumblock)(int ,int ) = ^(int a,int b){

return a + b;

};

int sum = sumblock(10,11);

NSLog(@"sum = %d",sum);

//利用typedef定义block来创建一个block变量

SumP sumblock1 = ^(int a,int b){

return a - b;

};

int d = sumblock1(10,5);

NSLog(@"d = %d",d);

return 0;

}

打印:

调用了test函数

调用了test函数

c is 3

2014-04-17 23:02:30.926 block的简单使用[530:303] ---------

2014-04-17 23:02:30.931 block的简单使用[530:303] ---------

2014-04-17 23:02:30.932 block的简单使用[530:303] sum = 21

2014-04-17 23:02:30.932 block的简单使用[530:303] d = 5

Program ended with exit code: 0

OC block的简单使用的更多相关文章

  1. 关于Block的简单使用

    Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍.我们可以简单地定义.使用block. 1. Block和C的指针函数很像,但比C的函数灵活多了.废话了.... ...

  2. iOS - OC Block 代码块

    前言 Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的,类似于一个 ...

  3. Objective-C学习笔记(四)——OC实现最简单的数学运算

    本篇帖子会实现使用OC的最简单的加减乘除运算.学习的知识点包含变量定义.运算方法,格式化输出等概念.主要学习主要的语法,事实上和C语言的语法还是比較相似的. 具体代码仅仅要写在main方法中即可了.具 ...

  4. 最直接的教你OC中Block的简单使用场景

    场景一: A控制器跳转到B控制器   --   B控制器事件处理通过Block回调给A控制器 A 跳转前界面如下 点击ToB按钮到控制器B 在控制器B中点击按钮返回到A界面如下             ...

  5. Swift3.0 函数闭包与OC Block

    刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> S ...

  6. Block的简单使用

    代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数,并得到返回值. 代码块本质上是变量,只不过它存储的数据是一个函数体,因此名字 ...

  7. Block很简单,就像delegate的简化版

    代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界 ...

  8. OC Block网上转载

    1.block是一个特殊的OC对象, 它建立在栈上, 而不是堆上, 这么做一个是为性能考虑,还有就是方便访问局部变量. 2.默认情况下block使用到的局部变量都会被复制,而不是保留.所以它无法改变局 ...

  9. iOS Block的简单使用以及__block 和static修饰变量

    简单的代码总结,不足之处多多指教. //简单的使用 -(void)blockOne{ ; int(^BlockOne)(int) = ^(int num2) { return number*num2; ...

随机推荐

  1. [webgrid] – header - (How to Add custom html to Header in WebGrid)

    How to Add custom html to Header in WebGrid MyEvernote Link Posted on March 30, 2013by mtryambake Ho ...

  2. 使用code标签获得类似代码段的效果

    几乎所有的浏览器都支持 code标签 code标签, 顾名思义,就是代码标签, imply tell browser, that 后面的部分是表示计算机代码. 因此, 浏览器可以根据自己的特点来显示这 ...

  3. php对uploads文件的处理问题的解决

    解决uploads问题的要点有几点: 参考这篇文章 第一, 在php.ini文件中, 有file_uploads这一节 file_uploads = On ;是否开启文件上传功能, 该功能有很大的安全 ...

  4. connect() failed (111: Connection refused) while connecting to upstream

    配置好lamp后,在浏览器中运行程序后,出现上面的错误. 转自:http://www.xuejiehome.com/blread-1828.html I'm experiencing 502 gate ...

  5. Java字节流:InputStream OutputStream

    字节输入流:InputStream 类声明: public abstract class InputStream implements Closeable 位于java.io包下,是一个抽象类. 官方 ...

  6. iOS中assign,copy,retain之间的区别以及weak和strong的区别(面试)

    • copy: 用于希望保持一份传入值的拷贝,而不是值自身的情况,即把原来的对象完整的赋值到另外一地方,重新加载一内存区,一个地方变了不影响另一个地方的对象. • assign:  简单的直接赋值,相 ...

  7. MAVEN for mac 安装

    http://blog.csdn.net/anialy/article/details/22217937 下载 maven  http://mirrors.hust.edu.cn/apache/mav ...

  8. 重读C#委托、事件有感

    去年学习C#的时候按照进度把C#的委托和事件“认真”的学习了一下,自己知道委托和事件的重要性,所以也努力的学习,可说实也没怎么学懂.碰巧这段时间在做一个解析GPS数据的小项目,因为其中有需要条件自动判 ...

  9. C\C++ 字符串的格式化与类型转化

    字符串格式化 1.sscanf int sscanf(const char *buffer,const char *format,[argument ]...) 取到指定字符为止的字符串.如在下例中, ...

  10. Web服务精讲–搭个 Web 服务器(二)

    导读 曾几何时,你所选择的 Python Web 框架会限制你所可选择的 Web 服务器,反之亦然.如果某个框架及服务器设计用来协同工作的,那么一切正常. 在第一部分中,我提出了一个问题:“如何在你刚 ...