OC中的block基础知识


//  1.函数指针专门用来指向C语言的函数的指针(专门用来存储函数名的地址)

//  2.选择器是用来存储OC中方法,(存的也是方法名)

//  3.block也是专门用来存储方法 (存的是函数体-实现函数功能的代码段)


//


#import <Foundation/Foundation.h>



void func1(){

    NSLog(@"函数1");

}


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //===========1.回顾函数指针========

        // 返回值类型(*函数指针名)(参数列表)

        //声明一个可以指向返回值是空,没有参数的函数的函数指针

        void (*pfunc)() = func1;

        

        //用这个函数指针存储函数地址

        pfunc = func1;

        

        //通过函数指针调用函数

        pfunc();

        

        //函数指针的作用:将函数作为参数来传递

        

        //=========2.block基础============

        //"block""指针"一样,只是对一种类型的描述;通过表达式前面"*"来判断表达式是指针。我们是通过表达式前面的"^"来判断表达式是block。指针专门用来存储地址,block专门用来存储代码块。

        //block存储代码块的方式和函数指针存储函数的方式很像。

        //想要存储什么样的函数的代码块,你就需要声明什么样的block去存储

        

        //a.block的声明

        //返回值类型 (^block变量名)(参数列表);

        void (^block1)();      //声明了一个block变量block1;这个block变量能够存储是没有返回值,没有参数的函数的函数体

        

        //b.block的初始化

        //返回值类型 (^block变量名)(参数列表) = ^(参数列表){函数体};

        void (^block2)() = ^(){

        

            //写函数功能的实现的代码段(函数体)

            NSLog(@"这个一个代码段");

            

        };

        

        //c.赋值

        block1 = ^(){

        

            NSLog(@"这第二个代码段");

        };

        

        //d.block的调用

        //block中存储的代码段,在调用block调用的时候才会执行

        //block调用和C语言的函数调用一样

        block1();

        block2();

          

        

    }

    return 0;

}


转载于:https://my.oschina.net/luhoney/blog/649497

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值