美文网首页
09-10、Block基本概念

09-10、Block基本概念

作者: 山中石头 | 来源:发表于2017-09-27 11:27 被阅读0次

Block在OC中是一种数据类型,那么就可以定义变量,作为形参,作为返回值。
复习C语言中指向函数的指针,对于Block学习大有帮助,因为他们很像。

Snip20170927_77.png
main.m
#import <Foundation/Foundation.h>


void printRose(int num)
{
for (int i = 0; i < num; ++i) {
    
    printf("  {@} \n");
    printf("   |  \n");
    printf("  \\|/ \n");
    printf("   | \n");
}
}

int sum(int value1, int value2)
{
return value1 + value2;
}
int main(int argc, const char * argv[]) {
/*
第一个例子:没有返回值,也没有形参
// void代表指向的函数没有返回值
// ()代表指向的函数没有形参
// (*roseP)代表roseP是一个指向函数的指针
//    void (*roseP) ();
//    roseP = printRose;
//    roseP();

// 定义一个block变量,
// block和函数一样,可以没有返回值,也没有形参
// 也可以没有返回值有形参
// 也可以有返回值没有形参
// 也可以有返回值有形参
// 所以, 在定义一个block变量的时候, 也需要告诉该变量将来保存的代码有没有返回值和形参

// void代表block将来保存的代码没有返回值
// ()代表block将来保存的代码没有形参
// (^roseBlock) 代表reseBlock是一个block变量, 可以用于保存一段block代码
void (^roseBlock) ();
// 如果block没有参数, 那么^后面的()可以省略
roseBlock = ^(){
    printf("  {@} \n");
    printf("   |  \n");
    printf("  \\|/ \n");
    printf("   | \n");
};
// 要想执行block保存的代码, 必须调用block才会执行
roseBlock();
roseBlock();
 */
/*
 第二个例子:没有返回值,有形参
//    printRose(10);

//    void (*roseP)(int);
//    roseP = printRose;
//    roseP(3);

void (^roseBlock) (int);
roseBlock = ^(int num){
    for (int i = 0; i < num; ++i) {
        
        printf("  {@} \n");
        printf("   |  \n");
        printf("  \\|/ \n");
        printf("   | \n");
    }

};

roseBlock(2);
 */

/*
 第三个例子:有返回值,有形参
//    int (*sumP)(int, int);
//    sumP = sum;
//    NSLog(@"sum = %i", sumP(10 , 20));

int (^sumBlock) (int, int);
sumBlock =^(int value1, int value2){
    return value1 + value2;
};
NSLog(@"sum = %i", sumBlock(10, 40));
 */

//基本数据类型可以先定义再初始化,也可以定义的同时再初始化
//    int a = 10;
//    int b;
//    b = 20;

// 因为block是一种数据类型可以先定义再初始化,也可以定义的同时再初始化
//    int (^printBlock)(int);
//    printBlock = ^int (int num){
//        for (int i=0; i<num; ++i) {
//            printf("--------\n");
//        }
//        return 1;
//    }


int (^printBlock)(int)= ^int (int num){
    for (int i=0; i<num; ++i) {
        printf("--------\n");
    }
    return 1;
}
printBlock(2);


return 0;
}

相关文章

  • 09-10、Block基本概念

    Block在OC中是一种数据类型,那么就可以定义变量,作为形参,作为返回值。复习C语言中指向函数的指针,对于Blo...

  • block理解

    1 block基本概念 block作用:保存一段代码 block声明:void(^block)(void) blo...

  • 关于genesis block的基本概念

    关于genesis block的基本概念 系统级别的genesis block 每一个fabric instanc...

  • OC语言day06-12Block基本概念

    pragma mark Block基本概念 pragma mark 概念 pragma mark 代码

  • iOS Objective-C Block简介

    iOS Objective-C Block简介 1. 基本概念 block:带有自动变量(局部变量)的匿名函数(A...

  • Block学习总结(一)

    Block Block作为日常开发中必备的一种开发技巧,通过日常的使用和学习,在此对 Block的基本概念,使用语...

  • block的使用浅析

    1 block的基本概念 1.1 block的产生和用途 代码块Block是苹果在iOS4开始引入的对C语言的扩展...

  • Block 心得体会

    首先不介绍block的基本概念等,推荐对block的精华阐释:block一点也不神秘 其次说说我的理解: 1. 属...

  • Block基本概念

    比较特殊的数据类型 不能放函数 Protocol 协议 修饰符@required(默认的)@optional 可选...

  • Block基本概念

    1.什么是Block Block是iOS中一种比较特殊的数据类型 Block是苹果官方特别推荐使用的数据类型, 应...

网友评论

      本文标题:09-10、Block基本概念

      本文链接:https://www.haomeiwen.com/subject/icoyextx.html