iOS Block的简单使用以及__block 和static修饰变量
简单的代码总结,不足之处多多指教。
//简单的使用
-(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修饰变量的更多相关文章
- iOS - Block的简单使用
Block 的使用有两种: .独立Block .内联Block <一>独立Block 使用方式 一.定义一个Block Object,并调用. 1.定义 // 定义一个Bl ...
- 关于Block的简单使用
Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍.我们可以简单地定义.使用block. 1. Block和C的指针函数很像,但比C的函数灵活多了.废话了.... ...
- iOS block从零开始
iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void ...
- iOS block 闭包的学习
iOS 闭包 学习 理解: 1 . 闭包外界无法访问内部变量 ,它是一个独立的代码块. 2 . 闭包可以作为 一个方法 ,甚至局部变量 全局 变量 3 . 闭包 是一种引用类型 注 ...
- iOS block
主要内容: block基本声明格式 block访问区域变量 block代替代理 block基本声明格式: ^(传入的参数){具体代码}; 注: Block实体开头是"^",接着是由 ...
- iOS Block理解
以前看到Block觉得也没什么,不就是类似函数的东西,这东西在C#里就是委托,在Java里就是块,有什么稀奇的.但看到一点进阶的内容后,发现这个东西确实有用. 所以做下总结. 一.块的基本用法 块的语 ...
- iOS Block简介
Block是对象,它封装了一段代码,这段代码可以在任何时候执行.block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:block是inli ...
- iOS Block 内存管理的探讨
在很多情况下Block是造成程序循环引用内存泄漏的元凶.下面我们就讲解一下block对内存管理的影响.在讲解之前.希望大家对block有一定的了解.如果大家还不是太清楚block的实现原理.希望大家可 ...
- iOS - Block 代码块
1.Block Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的, ...
随机推荐
- 两种数据传输的方式——get和post。
Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...
- smartClient 1--框架介绍
一.是什么(以下简称SC) smartClient 是一个基于web技术的开发框架,主要包括: 一个无需安装的 Ajax/HTML5 客户端引擎 UI组件和服务(采用富客户端RIA)--- 提 ...
- python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?
Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量 ...
- WPF开发的彩票程序(练手好例子) 附源码
前言 WPF是.NET最新的界面开发库,开发界面非常灵活!但是学习WPF难度也非常大. 应朋友之邀,编写了一个小程序.程序虽小,五脏俱全,WPF开发的灵活性可窥见一斑. 对于新手学习有很好的借鉴意义, ...
- 3255:十进制到六进制-poj
3255:十进制到六进制 总时间限制: 1000ms 内存限制: 65536kB 描述 进制转换: 将十进制(不超过int类型表示的范围)的数转换为六进制的数. 输入 输入为第一行是组数n,后面n ...
- NSUserDefault
NSUserDefault是Cocoa提供的默认应用程序状态保持接口.它提供了简化的plist文件持久化方法.通过NSUserDefault类,你可以把用户首选项保存到plist文件中.到应用程序结束 ...
- php编译安装php-5.6
#php编译安装php-5.6 ,Nginx+php使用 #!/bin/sh #php编译安装php-5.6 ,Nginx+php使用 #定义函数,默认绿色输出 '#' 开头为红色 function ...
- 【tyvj P4868】天天和不可描述
http://www.tyvj.cn/p/4868 超级水的题,用递归来模拟,用链表保存这层的内容,每遇到一个左括号就递归一层并合并返回的链表,遇到右括号后返回. 递归进入下一层时传递个参数标记读取新 ...
- while(true)应用 之 实现自己的消息队列
早些时候,一直有个疑问,就是比如你从前端发一个操作之后,后台为什么能够及时处理你的东西呢?当然了,我说的不是,服务器为什么能够立即接收到你的请求之类高大上的东西.而是,假设你用异步去做一个事情,而后台 ...
- 实现一个websocket常驻进程服务
由于工作的原因,近期调查了一下mac系统下常驻服务的接收websocket信息和创建进程的方法原理.将具体实现细节记录下来备忘. (一).准备工作 1.安装brew,在终端中输入: ruby -e & ...