//
// main.m
// OC5_Block
//
// Created by zhangxueming on 15/6/26.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
//block //函数指针 int add(int a, int b)// int (*)(int , int)
{
return a+b;
} typedef int (* Padd)(int, int); //block 是OC中的数据类型,用来保存一段代码块
typedef int(^ addBlock) (int, int);// int (^ ) (int , int) typedef int (^ MyBlock) (int, int); int main(int argc, const char * argv[]) {
@autoreleasepool {
Padd func=add;
NSLog(@"add =%i", func(,)); //不带参数的block
// void (^printBlock)(void)= nil;
// printBlock = ^(void)
// {
// NSLog(@" *");
// NSLog(@" ***");
// NSLog(@"*****");
// };
// NSLog(@"%p", printBlock);
// printBlock();
// printBlock();
//省约(void)
void (^printBlock)(void) = ^{
NSLog(@" *");
NSLog(@" ***");
NSLog(@"*****");
};
printBlock(); //带参数的block
int (^minusBlock)(int, int)=^(int a, int b)
{
return a-b;
}; NSLog(@"sub = %i", minusBlock(,)); //block可以直接读取block外部变量, 但是不能修改, 如果要修改block外部变量的值,需要在变量的前面 加 __block关键字 __block int num=; void (^numBlock)(void)=^{
NSLog(@"num = %i", num);
}; numBlock(); void (^setNumBlock)(int) = ^(int value)
{
num = value;
NSLog(@"num = %i", num);
}; setNumBlock(); //block 与 typedef
MyBlock multiBlock = ^(int a, int b)
{
return a*b;
}; NSLog(@"mul = %i", multiBlock(, ));
}
return ;
}

OC5_Block的更多相关文章

随机推荐

  1. 【JavaScript】直接拿来用!最火的前端开源项目(一)

    摘要:对于开发者而言,了解当下比较流行的开源项目很是必要.利用这些项目,有时能够让你达到事半功倍的效果.为此,本文整理GitHub上最火的前端开源项目列表,这里按分类的方式列出前九个. 对于开发者而言 ...

  2. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  3. MySQL · 引擎特性 · InnoDB 事务锁简介

    https://yq.aliyun.com/articles/4270# zhaiwx_yinfeng 2016-02-02 19:00:43 浏览2194 评论0 mysql innodb lock ...

  4. ubuntu14 部署zookeeper3.4.6启动失败

    解压缩zookeeper,启动时,报如下错误: zkServer.sh: 81: /home/xxx/zookeeper-3.4.6/bin/zkEnv.sh: Syntax error: " ...

  5. SimpleUrlHandlerMapping 处理器映射的配置--转

    http://blog.csdn.net/rainier001/article/details/6860491 <?xml version="1.0" encoding=&q ...

  6. hadoop2 作业执行过程之reduce过程

    reduce阶段就是处理map的输出数据,大部分过程和map差不多 //ReduceTask.run方法开始和MapTask类似,包括initialize()初始化,根据情况看是否调用runJobCl ...

  7. DataGridView 多线程更新 数据 解决卡顿问题

    使用多线程更新DataGridView,防止页面卡顿和卡死的问题 private delegate void UpdateDataGridView(DataTable dt); private voi ...

  8. Java Script基础(四) BOM模型

    一.BOM模型 BOM模型(Browser Object Model),也称为文档对象模型,它包含浏览器相关的属性和方法,例如操作,前进后退按钮,控制地址栏,关闭浏览器窗口,打开新窗口等等.它包含的对 ...

  9. jQuery中json对象的复制(数组及对象) .

    1.jQuery自带的$.map方式: $.map(json, function (n) { return n; }); 这种方式原来用于复制数组还可以,今天用它复制数组中的某一条记录,发现字段名称丢 ...

  10. javaweb学习总结二十五(response对象的用法一)

    一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...