zoukankan      html  css  js  c++  java
  • OC中新增的数据类型

    Block

       OC的Block跟C语言的指向函数指针含义相同,只不过使用Block可以更简洁、快速的定义一个指向函数指针。

       语法:

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

    C语言的函数指针

    void method()
    {
        NSLog(@"C语言的函数");
    }
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            void (*myMethod)() = method;//C语言的函数指针以*号作为标识
            myMethod();//调用
        }
        return 0;
    }

    OC的无参数Block:

    //定义一个block数据类型的变量,名字为myBlock。
    void (^myBlock)();
        //为变量赋值
    myBlock = ^{
       NSLog(@"myBlock代码块。。");
    }; //调用 myBlock();

     声明并初始化

    void (^myBlock)() = ^(){//括号可以省略 
         NSLog(@"定义了一个block并初始化");
    };//数据类型 = 值;
    myBlock();//调用

    OC的有参数Block:

    int (^sumBlock)(int,int) = ^(int a,int b)
    {
         return a+b;
    };
    int sum = sumBlock(10,25);//调用
    NSLog(@"sum = %d",sum);
    

    在Block内部修改外部的变量值,需要在变量声明时使用__block修饰。

    __block int a = 20;
        void (^myBlock)() = ^{
            a = 30;
        };
        myBlock();
        NSLog(@"a = %d",a);
    

    使用typedef定义block

    typedef int(^MyBlock)(int,int); //利用typedef定义block类型。
    #import <Foundation/Foundation.h>
    int main(int argc, const char * argv[])
    {
        //创建block类型的变量
        MyBlock add = ^(int a,int b){
            return a + b;
        };
        int sum = add(10,20);
        NSLog(@"sum = %d",sum);
        return 0;
    }
    
  • 相关阅读:
    大道至简第一章和java理论学时第一节。感受。
    jQuery基础
    JavaScript对象及初始面向对象
    使用JavaScript操作DOM
    JavaScript操作BOM对象
    JavaScript基础
    实体之间的对应关系
    MySQL常用函数
    SQL Server中分离附加数据及生成SQL脚本
    C#中子类构造函数
  • 原文地址:https://www.cnblogs.com/congliang/p/3683846.html
Copyright © 2011-2022 走看看