iOS Block语法 基础介绍1 浅谈(void(^MyBlock)()=^) oc block

来源:互联网 发布:linux下怎么解压缩 编辑:程序博客网 时间:2024/05/20 02:52

以前我们知道的数据类型如Double,枚举,结构体,指针,OC数据类型,id,但是还有种数据类型,叫做Block.接下来我想介绍一下Block

      这种数据类型,Block是苹果官方推荐让我们使用的,为什么了,因为Block的运行效率特别高,特别好用,iOS的开发中你会发现,到出都是Block,为什么这么多,最主要的一个原因就是他好用,运行效率高.

      Block的本质:其实他的本质还是c语言的函数,指向函数什么的,具体咱们先不谈,我先介绍一下Block是干什么用的,

      Block的作用:其实很简单,Block他是用来封装代码的,是用来保存代码的,只要使用Block保存的一段代码,他在程序运行的

      任何时候都可以调用,任何时候执行,这很像一个函数,我们函数不也是这样吗,你是把一段代码封装到一个函数里面去,要在某一个时间,调用这个函数,不就执行这段代码了,但是函数有一个缺点,函数在编译之前就已近确定了,但是Block他不一样,Block是程序运行时候保存一段代码,而函数不可以,函数的代码是固定死的,所以Block不一样.

      接下来我们写一个小小的例子1

 

void test()

{

    NSLog(@"我是王虎");

 

}

例子 有时候我们是不是希望在函数运行过程中就把这段代码保存起来,而且想把这段代码传来传去,这时候怎么办了.不好办,这时候我们就用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] 我是王虎


0 0