//
// 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. oracle 迁移到 mysql(结构和数据)

    1下载MySQL Migration Toolkit 2安装:jdk-6u38-ea-bin-b04-windows-amd64-31_oct_2012.exe 3下载ojdbc14.jar 具体地址 ...

  2. Mysql命令alter add:增加表的字段

    alter add命令用来增加表的字段. alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4 ...

  3. XianBicycle

    https://github.com/xialinchong/secrettalkandroid https://github.com/talentprince/PhotoView https://g ...

  4. 【JavaScript】Object.observe()带来的数据绑定变革

    Object.observe()带来的数据绑定变革 引言 一场变革即将到来.一项Javascript中的新特性将会改变你对于数据绑定的所有认识.它也将改变你所使用的MVC库观察模型中发生的修改以及更新 ...

  5. 使用cwRsync实现windows下文件定时同步【转】

    1.参考文献: 使用cwRsync实现windows下文件定时同步(备份) 文件同步工具CwRsync的使用方法及常用命令详解 2.背景: 当前的SCADA架构中,有1台Server,5台FE,还有1 ...

  6. [Angular 2] Create template with Params

    Angular 2 templates have a special let syntax that allows you to define and pass a context when they ...

  7. Android创建文件夹及文件并写入数据

    package elwin.fei.mobileaudio; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  8. iOS开发——开发必备OC篇&UITableView设置界面完整封装(四)

    设置界面完整封装(四) 简单MVC实现UITableView设置界面完善封装及拓展使用 关于使用和拓展, 其实基本上就是同UItableView,知识讲数据改一下就可以 拓展使用 1:首先定义一个数组 ...

  9. JAVA+FlexPaper+OpenOffice+SWFTools文档预览

    http://blog.csdn.net/core_star/article/details/10148047 1.软件环境: openoffice:启动openoffice服务:soffice.ex ...

  10. 激活office 2010

    在激活office 2010版本时有的同学可能会用到“mini-KMS_Activator”这个工具,其实这个工具激活成功率并不算高,我就没激活成功.然后就是了另一款自动激活工具“Office 201 ...