zoukankan      html  css  js  c++  java
  • OC中的block

    学习链接:https://www.jianshu.com/p/abb1eafeb068

    https://www.jianshu.com/p/5e2984de0e1d

    //
    //  learn_blo.m
    //  learn_KVC
    //
    //  Created by 蔡佳明 on 2020/10/15.
    //
    
    /**
     block在OC中叫闭包
     其实block跟C中的函数指针很相似,可以根据函数指针来理解block
     比如 C语言中的 int(*) (int x,int y)代表指向两个整形的参数,返回值为一个整形的指针
     而在OC的block中 是如何实现的呢 且看下边的代码
     */
    #import <Foundation/Foundation.h>
    
    //两个参数 返回值为一个参数的block
    int (^block)(int,int) = ^(int x,int y)
    {
        return x+y;
    };
    
    //无返回值 无参数的block
    void (^block1)(void)=^(void)
    {
        NSLog(@"无参数无返回值的block呀!!!");
    };
    
    //有返回值 无参数
    int (^block2)(void) = ^(void)
    {
        return 1;
    };
    //无返回值 有参数
    void (^block3)(int ,int ) = ^(int x,int y)
    {
        NSLog(@"%d + %d = %d",x,y,x+y);
    };
    
    int xx=2;
    int main()
    {
        NSLog(@"%d",block(3,5));
        block1();
        NSLog(@"这个值等于多少呀,%d",block2());
        block3(2,4);
        //还有一个非常重要的点 block和变量之间的关系
        int z=1;
        void (^block4)(void)=^(void)
        {
            
    //        z++; //会报错 不能修改局部变量
            //能访问局部变量
            NSLog(@"%d",z);
            
            //能修改全局变量
            xx++;
            NSLog(@"%d",xx);
            
        };
        block4();
        return 0;
    }
  • 相关阅读:
    注释代码片段
    更新docker时间-需要重启docker
    mysql随机查询若干条数据的方法
    Linux 块设备驱动 (一)
    Linux SD/MMC/SDIO驱动分析
    【转】Alsa音频编程【精华】
    goahead webserver源码分析
    【转】Linux系统调用列表
    Arm Linux系统调用流程详细解析
    Socket 相关的知识
  • 原文地址:https://www.cnblogs.com/caijiaming/p/13822035.html
Copyright © 2011-2022 走看看