浅谈Block
2016-02-27 10:07
204 查看
#import "ViewController.h"
@interface ViewController ()
//在代码块中可以使用和改变全局变量
@property(nonatomic,assign)int g;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self Test];
}
-(void)Test
{
self.g=10;
//定义一个能够被块访问并修改的变量
__block int a=0;
//局部变量可以使用但是不能在代码块中改变,若想改变地加上关键字__block
int d=88;
//定义一个块,这个块会修改它作用域中的一个变量(返回类型 块名称 参数类型 参数 块实际代码)
void(^sillyBlock)(int ,int)=^(int b,int c ){
a=a+b+c+self.g;
self.g=100;
NSLog(@"局部变量d:%d",d);
};
NSLog(@"执行Block前a的值:%d",a);
NSLog(@"执行Block前全局变量g的值:%d",self.g);
sillyBlock(100,100);
NSLog(@"执行Block后a的值:%d",a);
NSLog(@"执行Block后全局变量g的值:%d",self.g);
}
@end
@interface ViewController ()
//在代码块中可以使用和改变全局变量
@property(nonatomic,assign)int g;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self Test];
}
-(void)Test
{
self.g=10;
//定义一个能够被块访问并修改的变量
__block int a=0;
//局部变量可以使用但是不能在代码块中改变,若想改变地加上关键字__block
int d=88;
//定义一个块,这个块会修改它作用域中的一个变量(返回类型 块名称 参数类型 参数 块实际代码)
void(^sillyBlock)(int ,int)=^(int b,int c ){
a=a+b+c+self.g;
self.g=100;
NSLog(@"局部变量d:%d",d);
};
NSLog(@"执行Block前a的值:%d",a);
NSLog(@"执行Block前全局变量g的值:%d",self.g);
sillyBlock(100,100);
NSLog(@"执行Block后a的值:%d",a);
NSLog(@"执行Block后全局变量g的值:%d",self.g);
}
@end
相关文章推荐
- GCD之dispatch_barrier_asyc
- 笔记本磁盘图标变成U盘图标怎么办
- 抽屉实现技术原理
- jQuery实践中发现的问题
- Nosql的一些疑问
- 什么是表?
- 在脚本中刷新impala元信息
- 【设计模式】访问者模式
- android管理SD卡 mksdcard
- 在脚本中刷新impala元信息
- 快速排序
- launcher默认app图标排序xml
- InterLockedIncrement and InterLockedDecrement函数原理
- 不同hadoop集群之间迁移hive数据
- java修饰符大全详解
- 1015 Reversible Primes
- 1033. To Fill or Not to Fill (25)
- 不同hadoop集群之间迁移hive数据
- 绪论-第1章-《数据结构题集》习题解析-严蔚敏吴伟民版
- 教你如何使两台笔记本通过无线网卡共享上网