简单的代码总结,不足之处多多指教。

//简单的使用

-(void)blockOne{

    int number=;

    int(^BlockOne)(int) = ^(int num2)
{ return number*num2;
}; NSLog(@"输出的block %d",BlockOne()); } -(void)blockTwo{ int(^block)(int,int) = ^(int stra,int str2)
{ return stra + str2; }; NSLog(@"这是第二个啊 %d",block(,)); } -(void)blockThree{ //下边这个代表Block 会汇创输入的 平方根(int a 就是参数咧,return a*a ; 就是行为主体)。记得主题后边要加“;” 因为是叙述,而整个{} 后边也要加“;” 因为Block 是个物件实体 //小括号里边的3 会被当成 输入值然后由block输出3*3=9 致电该给reblock 这个变数 int reblock = ^(int a){ return a*a;}(); NSLog(@"reblock %d",reblock); //上边的简单方法 回传值 (^名字)(参数列); int (^square)(int); //有一个 square 的Block Pointer 其所指向的Block 是有一个int 输入 和输出 square = ^(int a){return a*a;};//将刚才的实体 制定给square //使用 NSLog(@"输出square 的 平方%d",square()); }

Block中变量的值在函数内外的变化

-(void)blockPointer{

#define mark  变量的变化 是否可以改变其值

//  1 未加修饰   Block  外改变outA后  不改变最后结果

   int outA = ;
int(^myPtr)(int) = ^(int a)
{ return outA + a;
}; outA = ;
//去与 block 在同一个作用域中值 int result = myPtr();
NSLog(@"block 外改变 outA的值为10后 会是13嘛 %d",result); ///这个值在进行到 block中时 第一次 会copy 到block中去,下次再用直接用copy值,其值之后辩护啊 对其都不会有影响 指的是变数的值; 如果是一个pointer指针的话,它的值是可以在block 里变化的 // 2 __block 修饰后 其外改变,可以改变 在其内改变 ,可以改变 //外部改变
__block int outB = ;
int(^myPtrB)(int) = ^(int b)
{
return outB + b;
}; outB = ;
//去与 block 在同一个作用域中值
int resultB = myPtrB(); NSLog(@"block 外改变 outB的值为10后 会是13嘛 %d",resultB); //block 内部改变 __block int outC = ; int(^myPtrC)(int) = ^(int c)
{ outC = ; return outC + c;
}; NSLog(@"block 内部 变 outC的值为10后 会是13嘛 %d",myPtrC()); } #define mark static 修饰变量的时候值的变化
// 用staic 修饰是的改变 因为outC是个static 变数会直接反应其值 -(void)blockStaticChange{ // 2 __block 修饰后 其外改变,可以改变 在其内改变 ,可以改变 //外部改变
static int outB = ;
int(^myPtrB)(int) = ^(int b)
{ return outB + b;
}; outB = ;
//去与 block 在同一个作用域中值
int resultB = myPtrB(); NSLog(@"static 外改变 outB的值为10后 会是13嘛 %d",resultB); //block 内部改变 static int outC = ; int(^myPtrC)(int) = ^(int c)
{ outC = ; return outC + c;
}; NSLog(@"static 内部 变 outC的值为10后 会是13嘛 %d",myPtrC()); }

iOS Block的简单使用以及__block 和static修饰变量的更多相关文章

  1. iOS - Block的简单使用

    Block 的使用有两种: .独立Block .内联Block   <一>独立Block 使用方式   一.定义一个Block Object,并调用.   1.定义   // 定义一个Bl ...

  2. 关于Block的简单使用

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

  3. iOS block从零开始

    iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void ...

  4. iOS block 闭包的学习

    iOS  闭包 学习 理解: 1 .   闭包外界无法访问内部变量 ,它是一个独立的代码块. 2 .   闭包可以作为 一个方法 ,甚至局部变量  全局 变量 3 .   闭包 是一种引用类型   注 ...

  5. iOS block

    主要内容: block基本声明格式 block访问区域变量 block代替代理 block基本声明格式: ^(传入的参数){具体代码}; 注: Block实体开头是"^",接着是由 ...

  6. iOS Block理解

    以前看到Block觉得也没什么,不就是类似函数的东西,这东西在C#里就是委托,在Java里就是块,有什么稀奇的.但看到一点进阶的内容后,发现这个东西确实有用. 所以做下总结. 一.块的基本用法 块的语 ...

  7. iOS Block简介

    Block是对象,它封装了一段代码,这段代码可以在任何时候执行.block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:block是inli ...

  8. iOS Block 内存管理的探讨

    在很多情况下Block是造成程序循环引用内存泄漏的元凶.下面我们就讲解一下block对内存管理的影响.在讲解之前.希望大家对block有一定的了解.如果大家还不是太清楚block的实现原理.希望大家可 ...

  9. iOS - Block 代码块

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

随机推荐

  1. python PIL图像处理

    新建图像 # 三个参数分别代表图像的模式:常用的为RGB(3通道) .RGBA(4通道为透明通道,0为完全透明, 256为不透明) # 第二个参数为图像的长宽参数 # 第三个为默认的填充颜色,RGB时 ...

  2. c#使用PortableDeviceApiLib读取便携式设备(WPD:Windows Portable Devices)信息

    相关名词解释: WPD( Windows Portable Devices) 译作Windows 便携设备 (WPD) 是一种驱动程序技术,可支持广泛的可移动设备,比如移动电话.数码相机和便携媒体播放 ...

  3. C#Winform窗体 DataGridView全选按钮的实现方式

    最近,在做CS程序遇到一个头疼的问题,datagridview列表的全选按钮遇到各种问题,做的是自适应窗体大小,当窗体最大化导致全选按钮出现与列表数据不一致,特别不搭配,试了很久,网上也找了好多资料各 ...

  4. asp.net core 实现一个简单的仓储

    一直有自己写个框架的想法,但是一直没有行动起来,最近比较闲,正好可以开工了. 现在已经完成了两部分.1.一个简单仓储,实现使用的是ef 2.IOC部分,这里是把内置的ioc替换成了aotofac,这部 ...

  5. 项目实战——企业级Zabbix监控实战(一)

    项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点 ...

  6. CSS以图换字的9种方法

    前面的话 CSS以图换字的技术,很久都没人提起了.它是一种在h1标签内,使用图像替换文本元素的技术,使页面在设计和可访问性之间达到平衡.本文将详细介绍CSS以图换字的9种方法 文字隐藏 在h1标签中, ...

  7. python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式

    一.项目目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在txt文件中,html解析方式基于正则表达式 二.确定页面内容 爬虫地址:https://movie.douban.co ...

  8. CentOS环境下Docker私有仓库搭建

    本文讲述如何搭建docker私有仓库. 有了docker hub,为什么还要搭建docker私有仓库? 1.性能考虑:docker hub的访问要通过互联网,性能太低. 2.安全性:更多的时候,镜像不 ...

  9. git的CentOS服务端安装和windows客户端的使用

    git的CentOS服务端安装和windows客户端的使用 此教程以 搬瓦工vps CentOS 6 x64 的系统为环境,搭建 git 服务端.windows 7 系统为客户端. git客户端 在W ...

  10. PHP提高网站性能的一些方法

    前段时间面试问到了这个问题,回答的不是很全面,就去问了度娘,得到了一些比较全的答案,由于出处较多就没法确定原文出处了.下面是分享的答案. 一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量 ...