block传值也适用于从后往前传值

先介绍block的基本知识

/**
* 1、如何定义一个Block变量
2、怎样给定义的Block变量赋初值
3、如何冲定义Block类型
4、如何使用Block实现具体的佛那个能
5、Block与变量作用域的关系
*/ int sum(int a, int b) {
return a + b;
} int count = ; int main(int argc, const char * argv[]) { /**
* 1、Block是一种数据类型,并且是一种自定义的数据类型
2、Block的标志是^(托字符)
3、Block是匿名函数,TA与函数最主要的区别在于,函数在编译器就已经知道封装了什么功能,但是Block只有当执行时才知道内部封装的功能,所以说Block更加灵活多变
4、Block的作用也是封装代码段来实现具体的功能
5、既然Block是匿名函数,所以赋值时,不能将函数名直接赋值,初值为函数的实现体
*/

  // __block修饰基本类型,会将基本类型转成对象类型,将地址传入blcok中使用,block内外操作的是同一块内存,如果不加__block修饰,那么block内外使用的是不同的内存
  // __weak不能对基本类型操作
__block int a = ; void (^testBlock)() = ^ {
NSLog(@"%d",a);//Block内部可以访问局部变量的值 a = ; //Block内部如果想修改外界局部变量的值,必须对变量进行__block修饰 count = ;//Block内部可以直接修改全局变量的值,也可以直接访问全局变量的值
};
testBlock();
NSLog(@"a = %d, count = %d",a, count); int (*p)(int, int) = sum;
typedef int (*P)(int, int); //myBlock是一个有参有返的匿名函数
//myBlock是变量名
//Block类型为 int (^)(int , int),表示此Block为有一个整型返回值,两个整型参数的匿名函数
//初值为:
// ^(int a, int b) {
// return a + b;
// } /**
* 书写格式
1、初值中的返回值类型可以省略不写,但是必须保证,函数内部返回给外界的值的类型与返回值类型相同
2、定义Block变量的类型中,参数名可以省略不写,但是初值中参数名不能不写,否则无法参与运算
3、如果Block没有参数,那么在初值中表示参数的小括号可以省略不写
*/
typedef int (^MyBlock)(int, int); int (^myBlock)(int, int) = ^(int a, int b) {
return a + b;
};//Blocl实现
NSLog(@"result is %d",myBlock(, ));//Block执行 MyBlock subBlock = ^(int a, int b) {
return a - b;
}; void (^helloBlock)() = ^ {
NSLog(@"hello world");
}; //将字符串转整型
int (^intBlock)(NSString *) = ^(NSString *string) {
return [string intValue];
}; NSComparisonResult (^compareBlock)(NSString *, NSString *) = ^(NSString *str1, NSString *str2) {
return [str1 compare:str2];
}; NSLog(@"%ld",compareBlock(@"a", @"b"));
helloBlock();
NSLog(@"%d",intBlock(@"")); return ;
}

简述block的更多相关文章

  1. iOS开发路线简述

    1 iOS开发环境1.1 开发环境标准的配置是MacOSX+Xcode.MacOSX的话首选用苹果电脑,Macmini最便宜只要4000多就好了然后自己配一个显示器,MacBookPro 也可以,不推 ...

  2. [ Bubble Sort ]& block

    [ Bubble Sort ] 冒泡排序!“预处理.block.预编译”!<环境:Terminal的gcc编译器> 简述:冒泡排序就是把小的元素往前调或者把大的元素往后调.比较是相邻的两个 ...

  3. HDFS 架构简述

    HDFS 架构简述 Hadoop分布式文件系统(HDFS)是一个分布式的文件系统,运行在廉价的硬件上.它与现有的分布式文件系统有很多相似之处.然而与其他的分布式文件系统的差异也是显着的.HDFS是高容 ...

  4. 蓝牙disable流程简述

    蓝牙关闭的流程比打开流程要简单,主要就是一些profile的断连以及协议栈相关结构的释放. 这里简单说一下其流程,就直接从协议栈的disable的接口说起了. static int disable(v ...

  5. OpenStack概念架构简述

    什么是OpenStack OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云 ...

  6. 简述组件化解决方案CTMediator与MGJRouter的主要思想

    简述CTMediator   CTMediator按照功能的结构来讲,使用时需要实现CTMediator的个三部分. 1.CTMediator类:承担总枢纽,总调度的责任 2.Target_(Modu ...

  7. JVM参数简述

    java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令.那么具体JVM启动包含哪些参数呢?这篇文章针对java8的情况做一篇汇总解读,包含大多数常见和不常见的命令参数,过于 ...

  8. Golang的标准命令简述

    Golang的标准命令简述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Go本身包含了大量用于处理Go程序的命令和工具.go命令就是其中最常见的一个,它有许多子命令,接下来就跟随 ...

  9. NVIDIA GPU Pascal架构简述

    NVIDIA GPU Pascal架构简述 本文摘抄自英伟达Pascal架构官方白皮书:https://www.nvidia.com/en-us/data-center/resources/pasca ...

随机推荐

  1. [有意思]The IT workers of Star Wars -- That's not a bug. It's a feature

    Yeah, that Artoo is kinda mouthy... ... now select, "restore to factory settings." That'll ...

  2. hadoop2.2.0伪分布式搭建3--安装Hadoop

    3.1上传hadoop安装包 3.2解压hadoop安装包 mkdir /cloud #解压到/cloud/目录下 tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/ 3 ...

  3. 关于linx中man命令内容中第一行数字的含义

    我们知道linux中man这玩意特别厉害,我们要查么个命令的使用方法.如man ls 出现如下内容 关于这写数字的含义如下表格

  4. web也是区分前端与后端的,session\cookie辨析

    <1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...

  5. Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...

  6. MMORPG大型游戏设计与开发(服务器 游戏场景 搜索机)

    双十一注定是忙碌的日子,所以到了现在我才将今天自己学习的内容拿出来跟大家分享.搜索机是我自己暂时取的名字,其实简单的说就是场景里提供搜索的一个工具,负责场景对象的范围搜索和获取.空洞的理论总是让人一头 ...

  7. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  8. 深入.NET平台的软件系统分成开发(1/6)

    第一章软件系统的分层开发 1.1 分成架构 分成模式定义:将解决方案中功能不同的模块分到不同的项目中实现.每一层中的主键应保持内聚性,每一层都应与他下面的各层保持松耦合. 分层模式是最常见的一种架构模 ...

  9. 洛谷CON1041 NOIP模拟赛一试

    A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式:  % 10007 输入 ...

  10. Unity Shader入门

    Unity Shader入门 http://www.cnblogs.com/lixiang-share/p/5025662.html http://www.manew.com/blog-30559-1 ...