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. Redis总结(三)Redis 的主从复制

    接着上一篇,前面两篇我总结了<Redis总结(一)Redis安装>和<Redis总结(二)C#中如何使用redis> 所以这一篇,会讲讲Redis 的主从复制以及C#中如何调用 ...

  2. How to get http response.

    public class HttpWebResponseUtility { public static string CreateGetHttpResponse(string url) { var r ...

  3. linq 多表分组查询统计

    var q1 = from orderitem in q2 join pd in _iProductDetailContract.Entities on orderitem.ProductDetail ...

  4. autofac获取全局Container

    _UserService = ((IContainerProviderAccessor)HttpContext.Current.ApplicationInstance).ContainerProvid ...

  5. SSL/TLS加密传输与数字证书解读

    什么是ssl? secure socket layer(ssl)协议最初由netscape企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准 ...

  6. phpStudy 创建多个站点,绑定域名

    默认情况下,phpStudy 的站点根目录是在它自己的WWW目录,比如 F:\phpStudy\WWW,访问的地址可以是 http://127.0.0.1/   或 http://localhost/ ...

  7. 脱离 Spring 实现复杂嵌套事务,之一(必要的概念)

    事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 表1事务传播行为类型 事务 ...

  8. 代码重构 & 常用设计模式

    代码重构 重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 1  新建一个方法 ...

  9. C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  10. centos 安装 mysql5.6

    转载自 http://www.cnblogs.com/littlehb/archive/2013/04/02/2995007.html Mysql 5.5以后使用了CMake进行安装,参考与以前的区别 ...