zoukankan      html  css  js  c++  java
  • OC block的简单使用

    http://blog.csdn.net/itpeng523/article/details/23965147

    一、先用Xcode创建一个空工程

    学习block之前先用弄懂c语言的函数指针

    看代码:

    typedef int (^SumP)(int,int);//用typedef定义一个block类型

    void test()

    {

        printf("调用了test函数 ");

    }

    int sum(int a,int b)

    {

       return a+b;

    }

    int main(int argc,constchar * argv[])

    {

        void (*p)();//这是一个函数指针 能够指向一个返回值为void 没有形参的函数

        //(*p)是固定写法,代表指针变量p将来肯定指向函数

        //左边的void:指针变量p指向的函数没有返回值

        //右边():指针变量p指向的函数没有形参

        p = test;//指针变量p指向test函数

        //利用指针变量间接调用取出函数

        (*p)();

        //也可以

        p();

        int(*xp)(int,int);//定义一个指向函数的指针返回值是int 函数的参数是int int

        xp =sum;

       int c = (*xp)(1,2);

        printf("c is %d ",c);

        //下面来学习block

       /*

         作用:

         Block封装了一段代码,可以在任何时候执行

         Block可以作为函数参数或者函数的返回值,而本身又可以带输入参数或返回值

         block,在多线程、异步任务,集合遍历,集合排序、动画专场用得多

         */

        

        //block用来保存一段代码

        //block的标志 :^

        //block跟函数指针很像

        

        //定义block变量没有返回值没有参数

       void(^myblock)() = ^ {

            NSLog(@"---------");

            NSLog(@"---------");

        };

        //利用block变量调用block内部的代码

        myblock(); //运行block

        

        //定以一个block返回值为int函数的参数为int int

       int(^sumblock)(int ,int ) = ^(int a,int b){

           return a + b;

        };

        

       int sum = sumblock(10,11);

       NSLog(@"sum = %d",sum);

        //利用typedef定义block来创建一个block变量

       SumP sumblock1 = ^(int a,int b){

           return a - b;

        };

       int d = sumblock1(10,5);

        NSLog(@"d = %d",d);

        return 0;

    }

    打印:

    调用了test函数

    调用了test函数

    c is 3

    2014-04-17 23:02:30.926 block的简单使用[530:303] ---------

    2014-04-17 23:02:30.931 block的简单使用[530:303] ---------

    2014-04-17 23:02:30.932 block的简单使用[530:303] sum = 21

    2014-04-17 23:02:30.932 block的简单使用[530:303] d = 5

    Program ended with exit code: 0

  • 相关阅读:
    Nginx的配置详解
    马拉车算法
    C++ 智能指针(shared_ptr/weak_ptr)原理分析
    大小端(内存、寄存器、CPU)
    printf函数输出字符串乱码问题
    ArcGIS中应用Expressions标注(Label)之二—使用外部数据库中数据标注要素
    Cisco Aironet ap3g1/ap3g2 8.5版本胖AP固件网页配置教程
    Golang mapstructure
    NDB 和 InnoDB 的不同
    高质量:Makefile
  • 原文地址:https://www.cnblogs.com/wangluochong/p/5300858.html
Copyright © 2011-2022 走看看