iOS Block语法 基础介绍1 浅谈(void(^MyBlock)()=^) oc block
2015-09-17 22:42
441 查看
以前我们知道的数据类型如Double,枚举,结构体,指针,OC数据类型,id,但是还有种数据类型,叫做Block.接下来我想介绍一下Block
这种数据类型,Block是苹果官方推荐让我们使用的,为什么了,因为Block的运行效率特别高,特别好用,在iOS的开发中你会发现,到出都是Block,为什么这么多,最主要的一个原因就是他好用,运行效率高.
Block的本质:其实他的本质还是c语言的函数,指向函数什么的,具体咱们先不谈,我先介绍一下Block是干什么用的,
Block的作用:其实很简单,Block他是用来封装代码的,是用来保存代码的,只要使用Block保存的一段代码,他在程序运行的
任何时候都可以调用,任何时候执行,这很像一个函数,我们函数不也是这样吗,你是把一段代码封装到一个函数里面去,要在某一个时间,调用这个函数,不就执行这段代码了,但是函数有一个缺点,函数在编译之前就已近确定了,但是Block他不一样,Block是程序运行时候保存一段代码,而函数不可以,函数的代码是固定死的,所以Block不一样.
接下来我们写一个小小的例子1
void test()
{
NSLog(@"我是王虎");
}
例子2 有时候我们是不是希望在函数运行过程中就把这段代码保存起来,而且想把这段代码传来传去,这时候怎么办了.不好办,这时候我们就用Block,在前面我们已经说过,Block用来保存一段代码,有时候我们也称代码段,代码块.所以你想一想,你要保存一段代码,肯定要有一个{},而且你应该知道你要保存什么代码,你是不是应该在{}里面写上,假如我要输出我的名字,写在{}里面,我现在想把保存我名字的代码保存起来方便我以后随时调用,现在他只是一个普通的代码快,怎么让他知道我的代码块是Block,其实很简单,加一个Block的标志,指针的标志是*,Block的标志是数字6上面的^,
^其实是位运算符,或,但是在这里他不是或,他是Block,在{}最前面加一个^,如^{},加上^以后系统会知道这是Block.Block其实和函数很像,那像在什么地方了 1可
以保存代码 2有返回值 3有形参 我前面已经说过,Block是一种数据类型,现在我们来定义一个Block的变量,现在我们写一个他返回值void,注意Block有一个(),写一个MyBlock,这个是Blok的变量名,接下来在写一个(),()什么意思
代表我们没有形参 完成以后如以下代码,这么写意味着他没有返回值,没有参数
//1 定义Block变量
void(^MyBlock)()=^{
NSLog(@"我是王虎");
};
//2调用Block内部代码
MyBlock();
//我想在执行一次
MyBlock();
//我们可以看到打印结果 调用了两次
2015-09-17 22:02:14.251 iOS Block 基本使用[56168:6111112] 我是王虎
2015-09-17 22:02:14.251 iOS Block 基本使用[56168:6111112] 我是王虎
这种数据类型,Block是苹果官方推荐让我们使用的,为什么了,因为Block的运行效率特别高,特别好用,在iOS的开发中你会发现,到出都是Block,为什么这么多,最主要的一个原因就是他好用,运行效率高.
Block的本质:其实他的本质还是c语言的函数,指向函数什么的,具体咱们先不谈,我先介绍一下Block是干什么用的,
Block的作用:其实很简单,Block他是用来封装代码的,是用来保存代码的,只要使用Block保存的一段代码,他在程序运行的
任何时候都可以调用,任何时候执行,这很像一个函数,我们函数不也是这样吗,你是把一段代码封装到一个函数里面去,要在某一个时间,调用这个函数,不就执行这段代码了,但是函数有一个缺点,函数在编译之前就已近确定了,但是Block他不一样,Block是程序运行时候保存一段代码,而函数不可以,函数的代码是固定死的,所以Block不一样.
接下来我们写一个小小的例子1
void test()
{
NSLog(@"我是王虎");
}
例子2 有时候我们是不是希望在函数运行过程中就把这段代码保存起来,而且想把这段代码传来传去,这时候怎么办了.不好办,这时候我们就用Block,在前面我们已经说过,Block用来保存一段代码,有时候我们也称代码段,代码块.所以你想一想,你要保存一段代码,肯定要有一个{},而且你应该知道你要保存什么代码,你是不是应该在{}里面写上,假如我要输出我的名字,写在{}里面,我现在想把保存我名字的代码保存起来方便我以后随时调用,现在他只是一个普通的代码快,怎么让他知道我的代码块是Block,其实很简单,加一个Block的标志,指针的标志是*,Block的标志是数字6上面的^,
^其实是位运算符,或,但是在这里他不是或,他是Block,在{}最前面加一个^,如^{},加上^以后系统会知道这是Block.Block其实和函数很像,那像在什么地方了 1可
以保存代码 2有返回值 3有形参 我前面已经说过,Block是一种数据类型,现在我们来定义一个Block的变量,现在我们写一个他返回值void,注意Block有一个(),写一个MyBlock,这个是Blok的变量名,接下来在写一个(),()什么意思
代表我们没有形参 完成以后如以下代码,这么写意味着他没有返回值,没有参数
//1 定义Block变量
void(^MyBlock)()=^{
NSLog(@"我是王虎");
};
//2调用Block内部代码
MyBlock();
//我想在执行一次
MyBlock();
//我们可以看到打印结果 调用了两次
2015-09-17 22:02:14.251 iOS Block 基本使用[56168:6111112] 我是王虎
2015-09-17 22:02:14.251 iOS Block 基本使用[56168:6111112] 我是王虎
相关文章推荐
- iOS激情详解之异步请求图片加载
- iOS开发之属性、单例、代理、通知传值比较
- ios 第三方支付
- iOS国际化---跟随系统语言
- iOS激情详解之json解析
- iOS开发 大文件下载(支持断点下载)
- iOS疯狂讲解之手势识别器
- iOS开发中 new与alloc/init的区别 及 [NSArray array] 和 [[NSArray alloc]init] 及 self. 和 _ 的区别
- [置顶] iOS中copy和mutableCopy的详细分析
- IOS 使代码在ARC和MRC环境编译通用
- iOS 中TextKit的使用中,设置部分字体,出现的问题及解决方法
- IOS GDC实现单例写法ARC与MRC
- IOS--Quartz2D绘图绘制小黄人
- iOS应用开发-地图定位
- IOS--Quartz2D绘图
- JSON TO NSDictionary Mac & iOS
- IOS征途之三 分类与协议(二)
- ios 爱行华夏 技术支持
- iOS开发-获取设备电量
- ios9键盘回调与消息通知,理论上应该是个bug